我想删除一行,如果它包含指定的值。
2 5 8
1 3 7
8 5 9
因此,如果我想删除包含7作为第三个字段的行:
{
if($3 == 7){
####delete the line
}
}
答案 0 :(得分:17)
应该足够说
$ awk '$3 != 7'
请注意,这是一个数字比较,并将省略第三个字段所在的行,例如“0.7e1”,但它适用于您提供的示例数据。
答案 1 :(得分:8)
删除包含7
的行awk '!/7/' yourFile
答案 2 :(得分:6)
其他答案有效。这就是为什么
Awk的标准处理模型是读取一行输入,可选地匹配该行,如果匹配(可选)打印输入。其他解决方案使用否定匹配,因此打印行,除非匹配。
您的代码示例不使用否定匹配:它表示“如果某些内容属实,请执行此操作”。因为您要删除输入,所以当您匹配该目标时,您可以跳过它。
{
if($3 == 7){
#skip printing this line
next
}
}
IHTH。
答案 3 :(得分:0)
您可以这样做:
awk '$3 /7/ {next} {print}'