[英]Replace column in one file with column from another using awk?
我有兩個文件:
f1:
111 aaa 444
222 bbb 555
333 ccc 666
f2:
111 333 000 444
222 444 111 555
333 555 555 666
如何使用awk替換“f1”中的第二列,使用“f2”中的第三列?
嘗試:
awk 'FNR==NR{a[NR]=$3;next}{$2=a[FNR]}1' f2 f1
輸出:
111 000 444
222 111 555
333 555 666
上述代碼的說明:
FNR==NR
允許您一次處理一個完整的文件。 在這種情況下,它是文件f2
。 NR
和FNR
都包含行號,差異是當讀取新文件時, FNR
重置為1,而NR
繼續遞增。 f2
文件中,我們正在創建的陣列稱為a
使用行數( NR
)作為key
和第三列( $3
)作為值。 next
允許我們跳過動作塊的其余部分。 f2
文件結束,我們就開始處理f1
文件了。 NR==FNR
條件不會變為假,因為FNR
將從1遞增而NR
不會。 因此,只有第二個動作塊{$2=a[FNR]}
將被處理。 1
在最后打印線。 它返回true,並且在awk
true語句會導致行的打印。 f2 f1
是定義的文件的順序。 因為我們想要從文件f2
創建一個數組,所以我們首先放置它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.