Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 根据另一个文件作为匹配条件筛选文件条目_Bash_File_Filtering_Editing - Fatal编程技术网

Bash 根据另一个文件作为匹配条件筛选文件条目

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

真的是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 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