使用awk在文本文件中过滤

时间:2018-04-16 13:36:08

标签: awk

我有一个标签分隔的文本文件,就像这个小例子:

chr1    100499714   100499715   1
chr1    100502177   100502178   10
chr1    100502181   100502182   2
chr1    100502191   100502192   18
chr1    100502203   100502204   45

在我要制作的新文件中:

1-我想根据4th列选择行,这意味着4th列的值至少为10,否则我将保留整行,否则将被过滤掉。

2-在下一步中将删除第4列。     结果将如下所示:

chr1    100502177   100502178
chr1    100502191   100502192
chr1    100502203   100502204

为了得到这样的结果,我在awk中尝试了以下代码:

cat input.txt | awk '{print $1 "\t" $2 "\t" $3}' > out.txt

但我不知道如何实施过滤步骤。你知道如何修复代码吗?

2 个答案:

答案 0 :(得分:2)

只需在输出前输入条件:

cat input.txt | awk '$4 >= 10 {print $1 "\t" $2 "\t" $3}' > out.txt

答案 1 :(得分:0)

这是另一个,如果你有更多的字段可能会更好

$ awk '$NF>=10{sub(/\t\w+$/,""); print}' file