AWKは、括弧内のカンマで区切られた列の正確な値と一致します。

AWKは、括弧内のカンマで区切られた列の正確な値と一致します。

したがって、ファイルの列で正確に一致する数字を見つける必要があります。入力ファイルは次のようになります。

33.xx  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [11,22,33] 2020-12-12 12:12:12.1234
24.1b  1131  0 0 0 some+text1 12:12:12.9999  9999:090909 88 [1,25,22] 2020-12-12 12:12:12.1234
1.52  1211  0 0 0 some+text3 12:12:12.9999  9999:090909 88 [22,2,123] 2020-12-12 12:12:12.1234

22括弧の間の値の1つである行のみを一致させて最初の列を出力したいと思います。

ベストアンサー1

awkを使用してください。

$ awk '$(NF-2) ~ /[[,]22[],]/{print $1}' file
33.xx
24.1b
1.52

明るく晴れた日に一致するものを探している状況の異常を含む、より包括的な入力例で一致を見つけることを期待しています。

$ cat file
33.xx  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [11,22,33] 2020-12-12 12:12:12.1234
24.1b  1131  0 0 0 some+text1 12:12:12.9999  9999:090909 88 [1,25,22] 2020-12-12 12:12:12.1234
1.52  1211  0 0 0 some+text3 12:12:12.9999  9999:090909 88 [22,2,123] 2020-12-12 12:12:12.123
1.good  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [22] 2020-12-12 12:12:12.1234
2.good  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [11,22] 2020-12-12 12:12:12.1234
3.good  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [22,33] 2020-12-12 12:12:12.1234
4.good  1111  0 0 0 foo bar 12:12:12.9999  9999:090909 88 [11,22,33] 2020-12-12 12:12:12.1234
5.bad  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [11,33] 2020-12-12 12:12:12.1234
6.bad  1111  0 0 0 some+text 12:12:12.9999  9999:090909 88 [11,222,33] 2020-12-12 12:12:12.1234
7.bad  1111  0 0 0 this is [22] fun 12:12:12.9999  9999:090909 88 [11,33] 2020-12-12 12:12:12.1234

これが生成する出力は次のとおりです。おそらくOPが期待していたのでしょう。

$ awk '$(NF-2) ~ /[[,]22[],]/{print $1}' file
33.xx
24.1b
1.52
1.good
2.good
3.good
4.good

私は$(NF-2)各行の先頭ではなく最後からフィールドを計算するのに慣れているので、some+text実際に含まれているものに関係なく動作します。スペースが含まれていない場合は代わりにsome+text使用できます。$10$(NF-2)

おすすめ記事