2015-10-20 128 views
2

的端我有一个映射文件(mapping.txt)与内容如:SED正则表达式:字符串或正斜杠

/incoming 
/incoming/ 
/incoming-foo 
/incoming-foo/ 

使用sed和正则表达式和要匹配(然后删除)仅使用以下的前两行:

sed -i "/\\^/incoming\/?$/d" /mapping.txt 

但是,它不工作。

基本上,我想严格匹配/incoming/incoming/但没有别的。

任何帮助你们可以提供的将是非常棒的。

回答

1

您可以使用sed替代正则表达式定界符-r选项:

sed -r '\#^/incoming/?$#d' file 
/incoming-foo 
/incoming-foo/ 

或者与更多的转义:

sed -r '/^\/incoming\/?$/d' file 

在OSX(BSD)sed的使用:

sed -E '\#^/incoming/?$#d' file 
+1

谢谢!你的回答指向了正确的方向,我终于找到了工作。 – mroriel

+1

结束使用:'sed -ri“/^\/incoming \ /?$/d”mapping.txt' – mroriel

2

grep作为替代:

grep -vE '^/incoming/?$' file 

这将“删除”前两行。如果你想把输出写回你的文件,你可以:

grep -vE '^/incoming/?$' file > foo && mv foo file 
+0

谢谢,我打算使用grep作为替代方法。 – mroriel

相关问题