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