Linux

合併兩個文件中相同參數的值

  • December 31, 2019

我們有兩個文件 -primary.txtsecondery.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 是一個技巧,它告訴您是否正在處理第一個文件(假設第一個文件不為空)。如果它是第一個文件,則將第二列的值儲存到關聯數組中並移至下一行。如果我們不繼續,那麼我們必須處理第二個文件,所以列印出主文件中的值和儲存的值。

引用自:https://unix.stackexchange.com/questions/559696