在包含单个列值的多个文件中查找公共值

Abh*_*ava 3 awk text-processing comm

我有100个文本文件,每个文件包含单个列.文件如下:

file1.txt
10032
19873
18326

file2.txt
10032
19873
11254

file3.txt
15478
10032
11254
Run Code Online (Sandbox Code Playgroud)

等等.每个文件的大小不同.请告诉我如何找到所有这100个文件中常见的数字.

相同的数字在1个文件中只出现一次.

Ed *_*ton 5

无论相同的数字是否可以在1个文件中多次出现,这都可以使用:

$ awk '{a[$0][ARGIND]} END{for (i in a) if (length(a[i])==ARGIND) print i}' file[123]
10032
Run Code Online (Sandbox Code Playgroud)

以上使用GNU awk实现真正的多维数组和ARGIND.如有必要,可以轻松调整其他awks,例如:

$ awk '!seen[$0,FILENAME]++{a[$0]++} END{for (i in a) if (a[i]==ARGC-1) print i}' file[123]
10032
Run Code Online (Sandbox Code Playgroud)

如果每个文件中的数字都是唯一的,那么您只需要:

$ awk '(++c[$0])==(ARGC-1)' file*
10032
Run Code Online (Sandbox Code Playgroud)

  • 非常简洁的"琐碎的解决方案".我不得不停下来思考它. (2认同)