特定の列の他の値に基づいてテキストファイル内のすべての行を選択するにはどうすればよいですか?所望の値が特定の範囲内にない。
私が期待するものの簡単な例を以下に示します。
私のデータはテキストファイルに保存されます。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
私は解決策を探していますawk
。sed
paste
よろしくお願いします。
答え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