ファイルが2つあります。
ファイル1.txt
a|1|cd
a|2|cd
a|4|cd
ファイル2.txt
a|0001|hj|df
a|0002|ed|nb
a|0003|vf|za
a|0004|er|ns
a|0005|oi|lk
ファイルの2番目の列に一致する行を含む新しいファイルを作成するには、ファイルが必要です。次のコードを試してみましょう。
awk -F"|" 'NR==FNR{a[$2]++;next} a[$2] ' file1.txt file2.txt
ただし、2番目の列のfile1.txtの左側に0が含まれていないため、レコードが見つかりません。
awk -F"|" 'NR==FNR{a[$(printf("%09d\n", $2))]++;next} a[$2]'
しかし、うまくいきません。
結果は次のようになります。
ファイル3.txt
a|0001|hj|df
a|0002|ed|nb
a|0004|er|ns
答え1
フィールドに0を追加すると、awkはそれを文字列ではなく数値として扱います。
$ awk -F"|" 'NR==FNR{a[$2+0]++;next} a[$2+0] ' file1.txt file2.txt
a|0001|hj|df
a|0002|ed|nb
a|0004|er|ns
0001
文字列とは異なるため、1
各値に0を追加して数値に変換して目的の比較を生成します。