[英]Sed works only without grouping
我有以下格式的文件:
foo: ...
bar: ...
baz: ...
我要刪除所有以bar
, baz
或goo
開頭的行。 我可以使用以下格式進行兩次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.