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个文件中多次出现,这都可以使用:
$ 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)