gpt4 book ai didi

perl - 根据第一列将两个文件合并为一个

转载 作者:行者123 更新时间:2023-11-29 09:18:42 25 4
gpt4 key购买 nike

我有两个文件,都采用相同的格式——两列都包含一个数字,例如:

文件 1

1.00    99
2.00 343
3.00 34
...
10.00 343

文件2

1.00    0.4
2.00 0.5
3.00 0.34
...
10.00 0.9

我想生成以下文件(使用 awk、bash perl):

1.00    99      0.4 
2.00 343 0.5
3.00 34 0.34
...
10.00 343 0.9

谢谢

最佳答案

join file1 file2

假设文件在连接字段上排序。如果不是,您可以这样做:

join <(sort -V file1) <(sort -V file2)

这是一个 AWK 版本(sort 补偿了 AWK 的非确定性数组排序):

awk '{a[$1]=a[$1] FS $2} END {for (i in a) print i a[i]}' file1 file2 | sort -V

它似乎比 Perl 答案更短且更易读。

gawk 4中,可以设置数组遍历顺序:

awk 'BEGIN {PROCINFO["sorted_in"] = "@ind_num_asc"} {a[$1]=a[$1] FS $2} END {for (i in a) print i a[i]}' file1 file2

而且您不必使用排序 实用程序。 @ind_num_asc 是索引数字升序。参见 Controlling Array Traversal and Array SortingUsing Predefined Array Scanning Orders with gawk .

请注意,上面的sort 命令中的-V (--version-sort) 需要GNU sort来自 coreutils 7.0 或更高版本。感谢 @simlev 指出它应该在可用时使用。

关于perl - 根据第一列将两个文件合并为一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com