sed:-e 表达式 #1,字符 52:“s”的未知选项

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

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

猫file.txt

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

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

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

root="/home/user"

这是我的 bash 脚本,其中包含 sed 表达式

#!/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 路径时,returns 出现以下错误 -

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

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

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