根据 linux 中的两个键合并两个长度不等的文件
Merging two files with unequal lengths based on two keys in linux
我有两个不同长度的 txt 文件。
File 1:
Albania 20200305 0
Albania 20200306 0
Albania 20200307 0
Albania 20200308 0
Albania 20200309 3
Albania 20200310 7
Albania 20200311 4
Albania 20200312 2
File 2:
Europe Albania 20200309 2
Europe Albania 20200310 6
Europe Albania 20200311 10
Europe Albania 20200312 11
Europe Albania 20200313 23
Europe Albania 20200314 33
我想创建一个 File3,如果 File1 的第 1 列和第 2 列与 File2 的第 2 列和第 3 列相同,它将在 File2 的末尾添加 File1 的第 3 列。它应该是这样的:
File3:
Europe Albania 20200309 2 3
Europe Albania 20200310 6 7
Europe Albania 20200311 10 4
Europe Albania 20200312 11 2
我试过了
awk 'NR==FNR{A[,]=;next} ((,) in A) {print [=14=], A[,]}' file1.txt file2.txt > file3.txt
但是只是打印文件2,并没有添加文件1的第三列。
你能帮我解决这个问题吗?
提前致谢!
您的方法是正确的,但是在打印时您需要使用 A[,]
,您使用的 A[,]
不存在(因为 file1 的第一、第二列应该与第二和第三列进行比较file2) 的列在数组 A 中,因此它仅打印 file3 中 file2 的当前行值。
awk 'NR==FNR{a[,]=;next} ((,) in a) {print [=10=], a[,]}' file1 file2
另见link(感谢 James 在这里提供了很好的 link)Why we shouldn't use variables in capital letters
我有两个不同长度的 txt 文件。
File 1:
Albania 20200305 0
Albania 20200306 0
Albania 20200307 0
Albania 20200308 0
Albania 20200309 3
Albania 20200310 7
Albania 20200311 4
Albania 20200312 2
File 2:
Europe Albania 20200309 2
Europe Albania 20200310 6
Europe Albania 20200311 10
Europe Albania 20200312 11
Europe Albania 20200313 23
Europe Albania 20200314 33
我想创建一个 File3,如果 File1 的第 1 列和第 2 列与 File2 的第 2 列和第 3 列相同,它将在 File2 的末尾添加 File1 的第 3 列。它应该是这样的:
File3:
Europe Albania 20200309 2 3
Europe Albania 20200310 6 7
Europe Albania 20200311 10 4
Europe Albania 20200312 11 2
我试过了
awk 'NR==FNR{A[,]=;next} ((,) in A) {print [=14=], A[,]}' file1.txt file2.txt > file3.txt
但是只是打印文件2,并没有添加文件1的第三列。
你能帮我解决这个问题吗?
提前致谢!
您的方法是正确的,但是在打印时您需要使用 A[,]
,您使用的 A[,]
不存在(因为 file1 的第一、第二列应该与第二和第三列进行比较file2) 的列在数组 A 中,因此它仅打印 file3 中 file2 的当前行值。
awk 'NR==FNR{a[,]=;next} ((,) in a) {print [=10=], a[,]}' file1 file2
另见link(感谢 James 在这里提供了很好的 link)Why we shouldn't use variables in capital letters