
我有一個專案需求,需要從上到下讀取 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 並將陣列中的第四個欄位儲存arr
為索引。
然後讀取file1和print
每筆記錄。如果數組中存在第三個字段,則將輸出重定向到 file3 ,否則重定向到 file4 。