Text-Processing

根據特定列值選擇行

  • September 12, 2020

如何根據特定列的不同值選擇文本文件中的所有行?所需值不在特定區間內。

下面給出了我期望的一個簡短範例。

我的數據儲存在文本文件中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

我正在尋找解決方案awkorsedpaste

提前致謝。

您可以簡單地將數字串在一起作為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

引用自:https://unix.stackexchange.com/questions/608975