否定sed的正则表达式

问题描述:

的我在与标签分离器的文本文件的表,我有一个sed脚本,只选择在我的文件中有那些串83,86,173,163在第二栏:否定sed的正则表达式

sed -n '/^[^\t]\+\t\(83\|89\|147\|163\)/p' test.txt 

现在我想选择所有其他字符串,但第二列中的83,86,173,163。我试图把^放在不同的地方,并试图将p改为d,但没有成功。

任何人都可以帮助我吗?

+2

只要你使用'在 'P' 模式sed',为什么不试试'grep的-v'你的任务是什么? – agg3l

解决了我的问题使用!第106页:

sed -n '/^[^\t]\+\t\(83\|89\|147\|163\)/!p' test.txt

+0

你也可以使用'sed'/^[^ \ t] \ + \ t \(83 \ | 89 \ | 147 \ | 163 \)/ d'test.txt' ...参见https:// *。 com/documentation/sed/3120/address-and-address-range/17103/negating-address-range#t = 201611061139422082497更多示例 – Sundeep