4

下面是我的输入文件,input.txt

Value Value1 value2
5 1 2
1 4 3
2 1 5.5
0 0 0
4 1 0

我需要搜索第三列中的值(5.5),如果找到我需要完全删除该行。

我需要如下输出output.txt

Value Value1 value2
5 1 2
1 4 3
0 0 0
4 1 0

我已经尝试过 awk 命令来删除该行,但我被下面的部分(???)卡住了。不要如何从 awk 命令中删除整行。请提出实现这一目标的方法。谢谢!
awk -F"\t" '{if($3==5.5) ??? }'

4

3 回答 3

7

如果要排除具有第三列值的所有行,5.5则:

awk '$3!=5.5' filename
于 2013-06-19T06:02:28.420 回答
4

GNU 更安全的 sed

sed -r '/\s*(\S+\s+){2}5.5/d' file
于 2013-06-19T06:15:36.590 回答
0
perl -lane 'next if($F[2]=~/5.5/);print' your_file

如果第三列有 5.5 则该行将被删除。但是如果第三列是 5.52 或 15.53,那么使用上面的命令它们将被删除。因此,如果您只想删除具有 5.5 完全匹配的行,请使用以下命令:

perl -lane 'next if($F[2]=~/\b5.5\b/);print' your_file

测试如下:

> cat temp
Value Value1 value2 
5 1 2 
1 4 3 
2 1 5.51 
2 1 5.5 
0 0 0 
4 1 0
> 

使用第一个命令:

> perl -lane 'next if($F[2]=~/5.5/);print' temp
Value Value1 value2 
5 1 2 
1 4 3 
0 0 0 
4 1 0
> 

使用第二个命令:

> perl -lane 'next if($F[2]=~/\b5.5\b/);print' temp
Value Value1 value2 
5 1 2 
1 4 3 
2 1 5.51 
0 0 0 
4 1 0
>
于 2013-06-19T06:12:08.730 回答