根据特定列值选择行

根据特定列值选择行

如何根据特定列的不同值选择文本文件中的所有行?所需值不在特定区间内。

下面给出了我期望的一个简短示例。

我的数据存储在文本文件中input.txt

1.0     21
2.5     23
4.0     21
6.5     45
9.0     30
16.5    46
2.0     78
1.0     20
1.6     19
2.5     25
4.0     40
5.2     16
6.5     25
9.0     47
10.0    14
16.5    60
18.5    65
20.0    57
.
.etc

我想根据第一列的值选择行 2.5,6.5,16.5,...等

所以输出将如下所示。我不想按第一列对输出进行数字排序。

2.5     23
6.5     45
16.5    46
2.5     25
6.5     25
16.5    60

我正在寻找解决方案awksedpaste

提前致谢。

答案1

您可以简单地将数字串在一起作为awk条件:

$ awk '$1==2.5 || $1==6.5 || $1==16.5' file
2.5     23
6.5     45
16.5    46
2.5     25
6.5     25
16.5    60

当然,如果你的清单很长,那可能会变得非常烦人。另一种选择是将所需的数字保存在另一个文件中:

$ cat wantedNums
16.5
2.5 
6.5 

然后用它来过滤你的输入文件:

$ awk 'NR==FNR{a[$1]++; next} $1 in a' wantedNums file
2.5     23
6.5     45
16.5    46
2.5     25
6.5     25
16.5    60

相关内容