合并两个文件中相同参数的值

合并两个文件中相同参数的值

我们有两个文件 -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 是一个技巧,它告诉您是否正在处理第一个文件(假设第一个文件不为空)。如果它是第一个文件,则将第二列的值存储到关联数组中,然后移至下一行。如果我们不继续,那么我们必须处理第二个文件,因此打印出主文件中的值和存储的值。

相关内容