如何解决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 举报,一经查实,本站将立刻删除。