删除包含小于/大于用户指定值的数字的行

时间:2015-03-24 12:25:47

标签: awk sed grep

我需要删除大文件中包含大于用户指定数字的值的行(参见图片)。例如,我想摆脱值大于5e-48(x> 5e-48)的线,i。即应删除7e-46,7e-40,1e-36 ......的行。

sed,grep,awk或其他命令可以这样做吗?

谢谢

马库斯

enter image description here

2 个答案:

答案 0 :(得分:4)

使用awk:

awk '$3 <= 5e-48' filename

这仅选择第三个字段小于5e-48的那些行。

如果字段可以包含空格(因为数据看起来是制表符分隔的),请使用

awk -F '\t' '$3 <= 5e-48' filename

这会将字段分隔符设置为\t,因此会在制表符而不是任何空格处拆分行。对于显示的输入数据,它似乎没有必要,但是对这些事情采取防御措施是很好的做法(感谢@tripleee指出这一点)。

答案 1 :(得分:2)

例如,在Perl中,解决方案可以是

perl -ane'print unless$F[2]>5e-48'