我有一个制表符分隔的表,我想打印其中列“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(使用前将#替换为@)