如何合并两个文件之间的公共数据集

如何合并两个文件之间的公共数据集

我正在尝试合并两组数据

file1 是一个最多 366 的数字儒略日期文本文件,用于一起说明闰年和非闰年。

1
2
3
4
5
6
7
8
9
10

文件2是一个数据集,包含一年中各种缺失的日子

1 0.055980045
4 0.026198495
6 0.063033253
8 0.079462815

我正在尝试创建一个如下所示的文件 3

1 0.055980045
2
3
4 0.026198495
5
6 0.063033253
7
8 0.079462815
9
10

我尝试了很多命令sortgrep但未能完成此任务。有什么建议

答案1

您可以awk为此目的使用:

awk 'NR==FNR {missing[$1]=$2} NR>FNR {printf("%s %s\n",$1,missing[$1]);}' file2.txt file1.txt > file3.txt

这将先处理file2.txt然后再处理file1.txt

  • 在处理时file2.txt(由 表示FNR,每个文件的行号,等于NR,全局处理的行号),我们将“年份缺失天数”关联读入数组missing

  • 在处理 时file1.txt,我们打印数组中找到的年份和缺失天数missing(如果不存在则打印空字符串)。

输出将通过管道传送到文件file3.txt

答案2

我想您可以用来awk从第二个文件收集数据并散列第一个文件中的值

awk 'FNR == NR { map[$1] = $2; next } ($1 in map) { $2 = map[$1] }1' file2 file1

相关内容