0
我有兩個文件。如何使用awk比較和替換字段
12345||||||1000||756432||||
aaaaa||||||986754812345||986754||||
ccccc||||||134567222222||134567||||
file2的:如果現場9文件-1和場1文件-2是相同的,然後用場2的文件-1
file1的替換現場1文件-1:
756432|AAAAAAAAAAA
986754|20030040000
預期輸出是:
12345||||||AAAAAAAAAAA||756432||||
aaaaa||||||20030040000||986754||||
ccccc||||||134567222222||134567|||
我想這個代碼
awk -F"|" 'NR==FNR{a[$1]=$2} NR>FNR{$7=a[$2];print}' OFS='|' file2 file1
但不是替換該字段,而是將其刪除。
謝謝你的建議,能否請你解釋[$ 9] = 「!」 – SGS
@SGS:當然,用'一[$ 9] =! 「」'我們測試是否數組'a'包含字段'$ 9'中表示的字符串的值,所以當在file2中找到相應的值時,我們只更改'$ 7'的值。 – user000001
而不是'a [$ 9]!=「」'你可能會考慮'a'中的$ 9。對於前者,awk實際上會添加一個$ 9作爲索引和一個空值的數組元素。後者只是檢查它是否存在,而不使用任何額外的內存。通常情況下,無論哪種方式都很好,但在涉及大量文件時要記住差異。 – jas