微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决sed:-e表达式#1,字符52:`s'的未知选项

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

cat 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"

这是我的带有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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。