我有下面的脚本来组合两个文件.
awk -F"\t" '
{key = $1}
!(key in result) {result[key] = $0; next;}
{ for (i=2; i <= NF; i++) result[key] = result[key] FS $i }
END {
PROCINFO["sorted_in"] = "@ind_str_asc" # if using GNU awk
for (key in result) print result[key]
}
' $1 $2 > $3
第一列是关键,$1和$2.
但是如果$2列有一个键但是$1列没有键.
然后它除了1美元行之外还要合并.
我想结合只有1美元的钥匙存在.
我怎样才能简单地合并这两个文件?
例如,
档案1
Key Column1 Column2 Column3
Test1 500 400 200
Test2 499 400 200
Test5 600 200 150
Test6 600 199 150
Test7 599 199 100
文件2
Key Column4 Column5
Test1 Good Good
Test2 Good Good
Test3 Good Good
Test4 Good Good
Test5 Good Good
Test6 Good Good
Test7 Good Good
目前的组合
Key Column1 Column2 Column3 Column4 Column5
Test1 500 400 200 Good Good
Test2 499 400 200 Good Good
Test5 600 200 150 Good Good
Test6 600 199 150 Good Good
Test7 599 199 100 Good Good
Test3 Good Good
Test4 Good Good
预期结合.
Key Column1 Column2 Column3 Column4 Column5
Test1 500 400 200 Good Good
Test2 499 400 200 Good Good
Test5 600 200 150 Good Good
Test6 600 199 150 Good Good
Test7 599 199 100 Good Good
谢谢!
最佳答案
你错了.您所描述的是一个连接操作,并且有一个非常好的UNIX工具,其名称非常明显:
原文链接:https://www.f2er.com/linux/440537.html$join file1 file2 | column -t
Key Column1 Column2 Column3 Column4 Column5
Test1 500 400 200 Good Good
Test2 499 400 200 Good Good
Test5 600 200 150 Good Good
Test6 600 199 150 Good Good
Test7 599 199 100 Good Good
或者如果你坚持使用awk:
$awk 'NR==FNR{m[$1]=$2" "$3; next} {print $0,m[$1]}' file2 file1 | column -t
Key Column1 Column2 Column3 Column4 Column5
Test1 500 400 200 Good Good
Test2 499 400 200 Good Good
Test5 600 200 150 Good Good
Test6 600 199 150 Good Good
Test7 599 199 100 Good Good