簡體   English   中英

Sed僅在不分組的情況下起作用

[英]Sed works only without grouping

我有以下格式的文件:

foo: ...
bar: ...
baz: ...

我要刪除所有以barbazgoo開頭的行。 我可以使用以下格式進行兩次sed操作:

sed '/^bar:.*$/d'

但我想將所有可能性合而為一。 我認為這會起作用,但不會刪除以下行:

sed '/^(?:bar|baz|goo):.*$/d'

我還注意到,這甚至行不通:

sed '/^(bar):.*$/d'

這令人驚訝,因為我認為捕獲組實際上不會改變模式匹配中的任何行為。

您需要使用擴展的正則表達式

sed -r '/^(bar):.*$/d'

sed不支持perl正則表達式,因此您應該使用

sed -r '/^(bar|baz|foo):.*$/d'

沒有非捕獲組?:

您可以使用:

sed '/^\(bar\|baz\|foo\):/d' file

或使用擴展的正則表達式:

sed -r '/^(bar|baz|foo):/d' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM