gpt4 book ai didi

bash - 根据列中的值选择行

转载 作者:行者123 更新时间:2023-11-29 09:05:31 27 4
gpt4 key购买 nike

我有一个制表符分隔的表,我想打印其中列 '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%

最佳答案

首先

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

其次

awk '$x > FLOOR' Table.txt

其中 $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

其中 $x 是一个数字列,如 $1 或其他。

其中 $y 是一个数字列,如 $2 或其他。

示例:

awk '$1 > $2' awktest

或者...

awk '$2 > $1' awktest

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

关于bash - 根据列中的值选择行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23916082/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com