我有兩個檔案:
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==nr1' f2 f1
輸出:
111 000 444
222 111 555
333 555 666
上述**的說明:
> fnr == nr允許您一次處理乙個完整的檔案.在這種情況下,它是檔案f2. nr和fnr都包含行號,差異是當讀取新檔案時,fnr重置為1,而nr繼續遞增.
>當我們使用f2檔案時,我們正在建立乙個名為使用行號(nr)作為鍵和第三列($3)作為值的陣列. next允許我們跳過動作塊的其餘部分.
>一旦f2檔案結束,我們就開始處理f1檔案了. nr == fnr條件不會變為假,因為fnr將從1遞增而nr不會.因此,只有第二個動作塊將被處理.
>此塊的作用是通過查詢行號將第二列值重新分配給陣列值.
最後》 1列印線.它返回true,在awk中,true語句導致行的列印.
> f2 f1是定義的檔案的順序.由於我們想要從檔案f2建立乙個陣列,我們先把它放在第一位.
awk逐行拼接兩個檔案的內容
最近給資料庫導資料時,遇到需要把兩個資料檔案逐行拼接為乙個檔案,想起好 awk來了,之前只請它幫忙搞基過從資料行中提取某幾列資料,但還沒試過從多個檔案中合併資料的搞法。但我相信這位好 肯定還有很多搞基的花樣,那就借這次機會,釣一下它的魚 具體是這樣的,有兩資料檔案file1,file2 file1內...
Linux將兩個檔案合併
可以使用cat命令,有兩種實現的方式,一種將兩個檔案合併的到乙個新的檔案,另一種將乙個檔案追加到另乙個檔案的末尾。方法一 使用cat命令從檔案中讀入兩個檔案,然後將重定向到乙個新的檔案。這種方法可以一次性合併任意多個檔案。用法示例 將file1.txt和file2.txt合併到file.txt ca...
shell指令碼兩個小練習
編寫乙個shell指令碼,把第二個位置引數及其以後的各引數指定的檔案複製到第乙個位置引數指定的目錄裡。a.while迴圈實現 bin bash dir 1shift 命令列實參左移一位,未知引數右移一位 while 1 目錄不空 docp 1 dir shift shift實現迴圈 done建立目錄...