Bash 根据另一个文件作为匹配条件筛选文件条目
真的是bash和脚本的初学者,如果这对您来说是一个非常基本的问题,那么很抱歉 我有大约100万行的file1,每行包含两个字段。 我有大约270.000行的file2,每行有一个条目。它与file1字段1相同 目标是根据file2条目从file1中筛选出一个列表(保留filed1和field2条目) 例如:Bash 根据另一个文件作为匹配条件筛选文件条目,bash,file,filtering,editing,Bash,File,Filtering,Editing,真的是bash和脚本的初学者,如果这对您来说是一个非常基本的问题,那么很抱歉 我有大约100万行的file1,每行包含两个字段。 我有大约270.000行的file2,每行有一个条目。它与file1字段1相同 目标是根据file2条目从file1中筛选出一个列表(保留filed1和field2条目) 例如: file1 1 A 2 B 3 C 4 C 5 D 6 A 7 G 8 K 122 F . . 56677 A . 7272727272 A 1.000.000
file1
1 A
2 B
3 C
4 C
5 D
6 A
7 G
8 K
122 F
.
.
56677 A
.
7272727272 A
1.000.000 A
File2:
1
2
3
9
122
56677
7272727272
我希望根据file2筛选第一列,输出应如下所示:
1 A
2 B
3 C
122 F
56677 A
7272727272 A
如果给出了预期的输出,请尝试此行:
grep -Fwf file2 file1
或
我对它进行了测试,第一个选项给出了大约50k的结果——我估计结果的数量与文件2中的行数相同。第二个选项是空结果。我忘了提到公共列(第一个字段)的顺序是不同的。它会影响结果吗?我们100%确定file2条目在文件中。谢谢Krisztian@farkask删除
-w
?@BroSlow:结果相同,看起来两个选项都很好,但我认为我们的原始数据已损坏。
awk 'NR==FNR{a[$0]=1;next}a[$1]' file2 file1