我有一些名为file1,file2,file3 ......等文件.这些文件位于文件夹f1中.文件内容如下所示.我想计算每个文件中唯一的第一列对.有些文件没有数据.它打印为零.我怎么能用awk做到这一点?您的建议将不胜感激.
文件1
1586-1081 1586 1081 B-A NZ-OD1 3.01273
1586-1081 1586 1081 B-A NZ-OD2 2.69347
1589-1100 1589 1100 B-A NH1-OE1 3.80491
1589-1085 1589 1085 B-A NH2-OE2 2.7109
Run Code Online (Sandbox Code Playgroud)
文件2
43-415 43 415 B-A OE1-NH1 2.84503
43-415 43 415 B-A OE1-NH2 2.99614
Run Code Online (Sandbox Code Playgroud)
期望的输出
file1 3
file2 1
Run Code Online (Sandbox Code Playgroud)
使用GNU,awk您可以使用BEGINFILE和ENDFILE阻止.
$ cat file1
1586-1081 1586 1081 B-A NZ-OD1 3.01273
1586-1081 1586 1081 B-A NZ-OD2 2.69347
1589-1100 1589 1100 B-A NH1-OE1 3.80491
1589-1085 1589 1085 B-A NH2-OE2 2.7109
$ cat file2
43-415 43 415 B-A OE1-NH1 2.84503
43-415 43 415 B-A OE1-NH2 2.99614
Run Code Online (Sandbox Code Playgroud)
$ awk 'BEGINFILE{delete a}{!a[$1]++}ENDFILE{print FILENAME, length(a)}' file1 file2
file1 3
file2 1
Run Code Online (Sandbox Code Playgroud)
您不必指定每个文件.如果要对当前目录下的所有文件执行操作,只需使用glob(ie *)来引用所有文件.