[英]SED: delete lines containing first pattern and not containing second pattern
我有這樣的文件內容:
a1 b1
a2 b2
a2 b21
a2 b22
a3 b3
a4 b4
我需要刪除包含a2而不包含b2的sed行。 即得到以下結果:
a1 b1
a2 b2
a3 b3
a4 b4
使用awk
您可以執行以下操作:
cat file
a1 b1
a2 b2
a2 b21
a2 b22
a3 b3
a4 b4
a2 c3
awk '$1=="a2" && $2!="b2" {next} 8'
a1 b1
a2 b2
a3 b3
a4 b4
如果字段#1是a2
而字段#2不是b2
跳過該行。
sed -n --posix -e '/a2/ !{
p
b
}
/b2/ !p'
(根據Jotne +更正b
而不是t
)如果不包含a2,則打印,然后轉到下一行;如果包含,則打印,如果不包含b2,則打印
或更小
sed -n '/a2/ {/b2/ b
}
p'
這可能對您有用(GNU sed):
sed '/\ba2\b/!b;/\bb2\b/!d' file
要么:
sed '/\<a2\>/!b;/\<b2\>/!d' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.