sed:-e 表达式 #1,字符 52:未知选项到"s"



我只是使用简单的sed替换,通过从变量读取文件中的值来替换文件中的一些字符串

cat文件.txt

root="/content/drive/Shared drives/Media Library"
# some other lines
# ...

在上面的文件txt中,我打算用通过bash脚本读取的变量path的值来替换第1行中的/content/drive/Shared drives/Media Library

例如,如果我输入/home/user作为变量的值,则file.txt中的第1行应修改如下:

root="/home/user"

这是我的带有sed表达式的bash脚本

#!/usr/bin/env bash
read -e -p "Enter the path: " path
sed -i "1s//content/drive/Shared drives/Media Library/${path}/" file.txt

当我执行bash脚本并输入路径为/home/user时,它返回以下错误-

sed: -e expression #1, char 52: unknown option to `s'

使用sed处理文件路径时,可以通过使用不属于要处理的值的备用分隔符来简化操作。分隔符可以是s命令后面的任何字符。正斜杠/经常出现在示例中,但也可以是任何其他字符,如|#。这使得不必对值中的/进行转义。例如:

sed -i  "1s|/content/drive/Shared drives/Media Library|${path}|" file.txt

最新更新