【发布时间】:2015-02-22 15:12:38
【问题描述】:
我试图以这种方式比较两个不同的文件,比如“file1”和“file2”。 如果两个文件中的字段 $2 和 $3 相同,则打印 file2 的 $0。这是一个例子:
file1
E 352 697
E 25 692
E 510 744
file2
E 335 705 1 1
E 267 792 1 2
E 365 395 1 3
E 25 692 1 4
E 566 624 1 5
E 227 358 1 6
E 516 554 1 7
E 510 744 1 8
E 234 790 1 9
E 352 697 1 10
期望的输出:
E 352 697 1 10
E 25 692 1 4
E 510 744 1 8
请注意,file1 中的所有对 $2,$3 都包含在 file2 中,并且输出文件的行数与 file1 相同。 我知道有很多类似问题的问题,但所有答案都没有用。 我试过用:
awk 'FNR==NR {a[$2]; b[$3]; next} $2 in a && $3 in b' file1 file2 > output
它可以工作,但在输出文件中有额外的行。你可以帮帮我吗?谢谢!
【问题讨论】:
-
但是脚本给了我想要的输出。额外的行是什么意思?
-
我只放了一些文件行,原始文件要大得多。这意味着在输出文件中,file2 中存在行,而不是 file1 中存在行。我想这是因为 $2 或 $3 存在于 file1 但不是同时存在
标签: awk