Linux按列合并两个文件

我正在尝试合并以下两个文件(交集)

ID     Name  Telephone       

1 John 011

2 Sam 013

3 Jena 014

4 Peter 015

第二个文件Test2.txt

1       Test1    Test2

2 Test3 Test4

3 Test5 Test6

4 Test7 Test8

5 Test7 Test8

6 Test7 Test8

7 Test7 Test8

8 Test7 Test8

9 Test7 Test8

然后最终结果

ID     Name  Telephone    Remark1  Remark2

1 John 011 Test1 Test2

2 Sam 013 Test3 Test4

3 Jena 014 Test5 Test6

4 Peter 015 Test7 Test8

我确实如下所示

awk -F"\t" '

{key = $1 }

NR == 1 {header = key}

!(key in result) {result[key] = $0; next}

{ for (i=2; i <= NF; i++) result[key] = result[key] FS $i }

END {

print result[header]

delete result[header]

PROCINFO["sorted_in"] = "@ind_str_asc"

for (key in result) print result[key]

}

' Test1.txt Test2.txt > result.txt

我只是注意到这是联盟设置的。包括所有数据Test1和Test2。

我只希望对Intersection案例显示我期望的结果。仅(1,2,3,4)

你们有什么主意吗?谢谢!

回答:

$ awk -v OFS='\t' '

NR==1 { print $0, "Remark1", "Remark2"; next }

NR==FNR { a[$1]=$0; next }

$1 in a { print a[$1], $2, $3 }

' Test1.txt Test2.txt

ID Name Telephone Remark1 Remark2

1 John 011 Test1 Test2

2 Sam 013 Test3 Test4

3 Jena 014 Test5 Test6

4 Peter 015 Test7 Test8

以上是 Linux按列合并两个文件 的全部内容, 来源链接: utcz.com/qa/427572.html

回到顶部