2015-10-20 136 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

相關問題