【问题标题】:counting unique numbers from each file计算每个文件中的唯一编号
【发布时间】:2014-05-11 11:36:32
【问题描述】:

我有一些名为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

文件2

 43-415 43 415 B-A OE1-NH1 2.84503
 43-415 43 415 B-A OE1-NH2 2.99614

期望的输出

 file1  3
 file2  1 

【问题讨论】:

    标签: awk gawk


    【解决方案1】:

    使用 GNU awk,您可以使用 BEGINFILEENDFILE 块。

    $ 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
    

    $ awk 'BEGINFILE{delete a}{!a[$1]++}ENDFILE{print FILENAME, length(a)}' file1 file2
    file1 3
    file2 1
    

    您不必指定每个文件。如果要对当前目录下的所有文件执行操作,只需使用 glob(即*)来引用所有文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-06
      • 2020-11-28
      • 2023-04-06
      • 1970-01-01
      • 2017-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多