我正在尝试合并两组数据
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
我尝试了很多命令sort
,grep
但未能完成此任务。有什么建议
答案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