file1を上から下に読み、2番目の列をfile2の3番目の列と一致させる必要があるプロジェクト要件があります。どちらのファイルもタブで区切られます。
レコードが一致する場合は、ファイル1のレコード全体を新しいファイル3に書き込む必要があり、一致しない場合は同じレコードをエラーファイル(ファイル4)に書き込む必要があります。ファイル1とファイル2には500から510のレコードが含まれています。 File1は最初から読み取る必要があり、file2の列3の列2の値を読み取る必要があります(必要に応じて上から下に全体を検索します)。
ファイル1
ZZA 01 LIST18
ZZY 02 LIST38
UTW 80 LIST100
OOP 11 LIST56
ファイル2
A1 21138 99999 LIST18
W1 20223 99999 LIST44
Z9 20355 99999 LIST56
O9 21002 21154 LIST11
ファイル3
ZZA 01 LIST18
OOP 11 LIST56
ファイル4
ZZY 02 LIST38
UTW 80 LIST100
答え1
file1の列3をfile2の列4と一致させるには、次のようにしますawk
。
awk -F'\t' '
NR==FNR{ arr[$4]; next }
{ print > (($3 in arr) ? "file3" : "file4") }
' file2 file1
まず、file2を読み込み、配列の4番目のフィールドをarr
インデックスとして保存します。
次に、file1 とprint
各レコードを読み込みます。 3番目のフィールドが配列にある場合は出力をfile3にリダイレクトし、そうでない場合はfile4にリダイレクトします。