概述我有下面的脚本来组合两个文件. 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"] = "@i 我有下面的脚本来组合两个
文件
.Key Column1 Column2 Column3 Test1 500 400 200 Test2 499 400 200 Test5 600 200 150 Test6 600 199 150 Test7 599 199 100awk -F"\t" ' {key = } !(key in result) {result[key] =
; 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] }' >
但是如果$2列有一个键但是$1列没有键. 然后它除了1美元行之外还要合并
.
我怎样才能简单地合并这两个文件?
例如,
档案1
Key Column4 Column5Test1 Good Good Test2 Good GoodTest3 Good Good Test4 Good GoodTest5 Good Good Test6 Good GoodTest7 Good Good
文件2
Key Column1 Column2 Column3 Column4 Column5Test1 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 Column5Test1 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
预期结合.
$join file1 file2 | column -tKey Column1 Column2 Column3 Column4 Column5Test1 500 400 200 Good GoodTest2 499 400 200 Good GoodTest5 600 200 150 Good GoodTest6 600 199 150 Good GoodTest7 599 199 100 Good Good
谢谢!
解决方法 你错了.您所描述的是一个连接 *** 作,并且有一个非常好的UNIX工具,其名称非常明显:$awk 'NR==FNR{m[]=" "; next} {print ,m[]}' file2 file1 | column -tKey Column1 Column2 Column3 Column4 Column5Test1 500 400 200 Good GoodTest2 499 400 200 Good GoodTest5 600 200 150 Good GoodTest6 600 199 150 Good GoodTest7 599 199 100 Good Good
或者如果你坚持使用awk:
总结
以上是内存溢出为你收集整理的Linux awk合并了两个文件全部内容,希望文章能够帮你解决Linux awk合并了两个文件所遇到的程序开发问题。
评论列表(0条)