【发布时间】:2018-05-07 18:08:58
【问题描述】:
我有两个文件(数百万列)
File1.txt,~4k 行
some_key1 some_text1
some_key2 some_text2
...
some_keyn some_textn
File2.txt,约 20 M 行
some_key11 some_key11 some_text1
some_key22 some_key22 some_text2
...
some_keynn some_keynn some_textn
当File1.txt 中的第 2 列和File2.txt 中的第 3 列完全匹配时,我想从两个文件中打印出特定的行。
编辑
这个我试过了(我忘了写),但它不起作用
awk 'NR{a[$2]}==FNR{b[$3]}'$1 in a{print $1}' file1.txt file2.txt
【问题讨论】:
-
到目前为止你做了什么?
-
我已经编辑了这个问题。我忘了添加我的尝试。 @JoaoVitorino
-
请更具体地说明什么匹配什么。只有一列应该匹配吗?为什么这些文件有相同的名称?
-
@liborm 可以是多行与同一列。同名文件是错别字。
-
你说你试过
awk 'NR{a[$2]}==FNR{b[$3]}'$1 in a{print $1}',其中有3个单引号:awk 'NR...}'$1...}'。显然,您不能在由该字符分隔的字符串或脚本中间有一个 [未转义] 字符,所以 - 您希望中间的单引号是什么意思?你所拥有的就像写一个像He said "here is"the answer" to me这样的英文句子。在"-delimited 语句中间使用"是没有意义的,对于任何给定字符都是如此,那么您对'中间脚本的意图是什么?