Linux
合併兩個文件中相同參數的值
我們有兩個文件 -
primary.txt
和secondery.txt
在這兩個文件上,我們有相同的參數,但
secondary.txt
它們沒有按順序排列primary.txt
more primary.txt param.avarge.com 3443 param.no.com 43 param.lol.com 54 param.tis.com 24 param.er.com 254 param.nh.com 13 param.pl.com 456 param.nm.com 534 param.asd.com 236 more secondery.txt param.no.com 42 param.lol.com 51 param.tis.com 21 param.avarge.com 343 param.er.com 259 param.nh.com 131 param.pl.com 45 param.nm.com 50 param.asd.com 23
我們希望將
secondery.txt
值與primary.txt
值合併,如下所示:more merge.txt param.avarge.com 3443 343 param.no.com 43 42 param.lol.com 54 51 param.tis.com 24 21 param.er.com 254 259 param.nh.com 13 131 param.pl.com 456 45 param.nm.com 534 50 param.asd.com 236 23
如果我們對此提出建議,我將不勝感激,因此我將在我的 bash 腳本中更新解決方案
如果這一切都適合記憶,那麼
awk 'NR==FNR { s[$1]=$2 ; next } { print $0,s[$1] }' secondary.txt primary.txt
NR==FNR 是一個技巧,它告訴您是否正在處理第一個文件(假設第一個文件不為空)。如果它是第一個文件,則將第二列的值儲存到關聯數組中並移至下一行。如果我們不繼續,那麼我們必須處理第二個文件,所以列印出主文件中的值和儲存的值。