根据列中的值选择行

2024-01-24

我有一个制表符分隔的表,我想打印其中列“x”大于“Y”的所有行。我尝试使用下面的代码,但对使用 awk 很陌生,所以不确定如何根据列使用它。

awk '$X >= Y {print} ' Table.txt | cat > Wanted_lines 

Y 的值从 1 到 100。

如果输入如下所示,X 列是第二列。

1    30
2    50
3    100
4    100
5    80
6    79
7    90

想要的输出是:

3    100
4    100
5    80
7    90

该文件的前两行是:

1   OTU1    243622  208679  121420  265864  0   0   2   0   0   11  1   5   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   839604  OTU1    -   Archaea 100%    Euryarchaeota   100%    Methanobacteria 100%    Methanobacteriales  100%    Methanobacteriaceae 100%    Methanobrevibacter  100%
2   OTU2    84366   120817  15834   74737   0   0   0   0   0   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   295755  OTU2    -   Archaea 100%    Euryarchaeota   100%    Methanobacteria 100%    Methanobacteriales  100%    Methanobacteriaceae 100%    Methanobrevibacter  100%

First

awk 的默认内部字段分隔符 (FS) 将适用于空格或制表符分隔的文件。

Secondly

awk '$x > FLOOR' Table.txt

Where $x是目标列,并且FLOOR是实际的数字下限(即 5000 等...)

示例文件:awktest

500  100
400  1100
1000 400
1200 500


awk '$1 > 1000' awktest

1200   500

awk '$1 >= 1000' awktest

1000   400 
1200   500

因此,您应该能够使用关系表达式以以下形式打印 x > y 的行:

awk '$x > $y' awktest

Where $x是一个数字列,如下所示$1, 或其他。

Where $y是一个数字列,如下所示$2, 或其他。

Example:

awk '$1 > $2' awktest

or ...

awk '$2 > $1' awktest

awk 数字是浮点数,因此您也可以比较小数。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

根据列中的值选择行 的相关文章

随机推荐