
プロジェクト要件では、ファイル 1 を上から下に読み取り、その列 2 をファイル 2 の列 3 と一致させる必要があります。両方のファイルはタブ区切りです。
レコードが一致する場合、ファイル 1 の完全なレコードを新しいファイル 3 に書き込む必要があります。一致しない場合は、同じレコードをエラー ファイル (ファイル 4) に書き込む必要があります。ファイル 1 とファイル 2 には、500 ~ 510 のレコードが含まれています。ファイル 1 の読み取りを最初から開始し、ファイル 2 の列 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
ファイル1の列3をファイル2の列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 にリダイレクトします。