2014-01-21 38 views
0

如何使用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: `|' 

回答

1

这可能为你工作(GNU SED):

sed '\|/usr/share|s|^|#|' test 
+0

谢谢,这正是我一直在寻找。为那些棘手的逃生角色而战! –

2

这里有一种方法:

$ cat input 
This is a line 
/usr/share/test1.sh 
/usr/share/test2.sh 
/usr/bin/test.sh 

$ sed '[email protected]^\(/usr/share/\)@#\[email protected]' 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 

如果你想使用不同的分隔符在地址的正则表达式,你需要用反斜杠开始的地址。

相关问题