Linux awk合并了两个文件
发布时间:2020-12-14 01:50:33 所属栏目:Linux 来源:网络整理
导读:我有下面的脚本来组合两个文件. 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)
我有下面的脚本来组合两个文件.
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. 然后它除了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工具,其名称非常明显:
$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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |