如何使用sed
注释掉包含完整路径名的行?
我知道sed
几乎可以使用任何其他分隔符,但在这种情况下我不确定如何更改它。
测试文件:
cat test
/usr/share/test1.sh
/usr/share/test2.sh
预期产出:
sed '/\/usr\/share/s/^/#/' test
#/usr/share/test1.sh
#/usr/share/test2.sh
实际输出:
sed '|/usr/share|s|^|#|' test
sed: -e expression #1, char 1: unknown command: `|'
答案 0 :(得分:2)
这是一种方式:
$ cat input
This is a line
/usr/share/test1.sh
/usr/share/test2.sh
/usr/bin/test.sh
$ sed 's@^\(/usr/share/\)@#\1@' input
This is a line
#/usr/share/test1.sh
#/usr/share/test2.sh
/usr/bin/test.sh
顺便说一句,你的例子是作品,她是一个更新版本:
$ sed '\|\/usr\/share|{s|^|#|}' input
This is a line
#/usr/share/test1.sh
#/usr/share/test2.sh
/usr/bin/test.sh
如果要在地址中为正则表达式使用不同的分隔符,则需要使用反斜杠启动地址。
答案 1 :(得分:1)
这可能适合你(GNU sed):
sed '\|/usr/share|s|^|#|' test