両方のファイルの同じパラメータ値のマージ

両方のファイルの同じパラメータ値のマージ

2つのファイルがあります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スクリプトでソリューションを更新しましょう。

答え1

これが思い出に合ったら

 awk 'NR==FNR { s[$1]=$2 ; next }
      { print $0,s[$1] }' secondary.txt primary.txt

NR == FNRは、最初のファイルが処理されているかどうかを示すトリックです(最初のファイルが空ではないと仮定)。最初のファイルの場合は、2番目の列の値を連想配列に保存して次の行に移動します。続行しない場合は、2番目のファイルを処理する必要があるため、メインファイルの値と保存された値を出力します。

関連情報