使用AWK计算TSV文件中列值的出现次数

洛雷托帕里西

我有一个带有3个列的TSV制表符分隔文件:

ID\tTEXT\tTYPE

要打印TYPE

cat /dataset.csv | awk -F $'\t' '{print $3}'

这些值是诸如{CLASS_A,CLASS_B,CLASS_C}的值的枚举

枚举中的每个值匹配时,我需要使用AWK的内联方式来计算列的出现次数(NF?),TYPE以获取:

CLASS_A 1300
CLASS_B 450
CLASS_C 988

[更新]

根据下面的解决方案,我将这个脚本的最新版本放在这里

#!/bin/bash

COL=$1
FILE=$2

awk -v col="$COL" -F $'\t' '   {c[$col]++}
                 END{
                     for (i in c) printf("%s\t%s\n",i,c[i])
                 }' $FILE

并且计算第3列中的行出现次数的用法是

$ ./count_cols.sh 3 /myfile.csv
以撒

无需使用cat来读取文件。AWK非常有能力阅读它。

核心c[$3]++语句应获取每种类型的行数。
然后,最后,只需打印(作为制表符分隔的值)所有计数:

#!/bin/bash

awk -F '\t' '   {c[$3]++}
                 END{
                     for (i in c) printf("%s\t%s\n",i,c[i])
                 }' dataset.csv 

已追加

鉴于OP的评论:

对于带有引号的列,我会遇到一些问题,that doesn\'t mean that you\'re not worth remembering think of the people who need to know they need to know so you need ​to show....在这种情况下,对\ t的解析将失败。

我要复习答案。我创建了这个文件:

$ cat dataset.csv 
1233    that doesn\'t mean that you\'re not worth remembering think of the people who need to know they need to know so you need to show...    CLASS_0
1234    here    CLASS_A
1235    goes the values CLASS_B
1236    "that need counting"    CLASS_B
1237    "\like \this"   CLASS_B
1238    \or \this       CLASS_C
1239    including spaces        CLASS_B
1240    but not tabs    CLASS_A
1241    which could not work    CLASS_B
1242    finally CLASS_C
1243    this is CLASS_A
1244    over    CLASS_B
1245    988     CLASS_C

与脚本一起使用时,该文件将给出正确的结果:

$ ./script
CLASS_A 3
CLASS_B 6
CLASS_C 3
CLASS_0 1

这是正确的结果。

当然是档案

  1. 具有tabs3个字段的正确数量,并且
  2. 变量在扩展时正确加引号,并且不大写。

要测试文件是否符合第一个要求,可以使用以下脚本:

#!/bin/bash

filetoread="$2"

<"$filetoread" tr -dc '\t\n' |
    awk '(length!=2){printf("Error in line: %s, has %s tabs\n",NR,length)}'

awk -F '\t' '(NF!=3){printf("Error in line: %s, has %s fields\n",NR,NF)}' "$filetoread"

哪个检查每行是否有两个制表符,以及
字段的数量(如awk所示)实际上是三个。

添加一些测试行:

… …
1239    including spaces        CLASS_B
1       but not     tabs    CLASS_A
2       but not \ttabs  CLASS_A
1240    but not tabs    CLASS_A
… …

并运行上面的脚本:

$ ./script 3 dataset.csv
Error in line: 8, has 4 tabs
Error in line: 8, has 5 fields

检测具有四个选项卡(添加了两个选项卡)的行ID 1,并且没有被带有的行ID 2所欺骗\t

至于引用和使用变量,那是您应该自己改善的事情。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Awk - 计算列中某个值的出现次数

来自分类Dev

在AWK中:计算制表符分隔文件中一列中的出现次数,并将数据写入新的tsv文件

来自分类Dev

计算不同列中2个值的出现次数

来自分类Dev

计算列中每个值的所有出现次数

来自分类Dev

SQL - 计算列中不同值的出现次数

来自分类Dev

计算对象列中某个值出现的次数

来自分类Dev

计算csv文件列中字符串的出现次数

来自分类Dev

如何使用python计算csv文件中单词的出现次数?

来自分类Dev

如何使用COUNT计算两列中的出现次数?

来自分类Dev

如何使用COUNT计算两列中的出现次数?

来自分类Dev

计算javascript中每个值的出现次数

来自分类Dev

计算 postgres 中某个值出现的次数

来自分类Dev

计算几个文件中的出现次数

来自分类Dev

计算Tableau列中Null的出现次数

来自分类Dev

计算列猪中的单词出现次数

来自分类Dev

计算跨列的DataFrame中的出现次数

来自分类Dev

TSQL计算列中的出现次数

来自分类Dev

SQL - 计算列中的出现次数

来自分类Dev

计算列中条纹的出现次数

来自分类Dev

计算列的出现次数

来自分类Dev

计算特定值相对于另一列中的值出现的次数

来自分类Dev

我可以使用python“计算”json文件中的字段/名称出现的次数吗?我不需要字段中的值,但需要名称出现

来自分类Dev

R:累计计算列值出现在其他列中的次数

来自分类Dev

重击:根据y列中的值计算x列中值的出现次数

来自分类Dev

计算列值出现的次数并将列添加到数据框中

来自分类Dev

Excel:计算列中而不是数据透视表格式中的相似值行的出现次数

来自分类Dev

计算多列中的出现次数并使用 R 计算统计信息

来自分类Dev

Awk:如何计算字符串在各列之间的出现次数并在各行之间找到最大值?

来自分类Dev

我如何计算一个独特值出现在列中的次数?

Related 相关文章

  1. 1

    Awk - 计算列中某个值的出现次数

  2. 2

    在AWK中:计算制表符分隔文件中一列中的出现次数,并将数据写入新的tsv文件

  3. 3

    计算不同列中2个值的出现次数

  4. 4

    计算列中每个值的所有出现次数

  5. 5

    SQL - 计算列中不同值的出现次数

  6. 6

    计算对象列中某个值出现的次数

  7. 7

    计算csv文件列中字符串的出现次数

  8. 8

    如何使用python计算csv文件中单词的出现次数?

  9. 9

    如何使用COUNT计算两列中的出现次数?

  10. 10

    如何使用COUNT计算两列中的出现次数?

  11. 11

    计算javascript中每个值的出现次数

  12. 12

    计算 postgres 中某个值出现的次数

  13. 13

    计算几个文件中的出现次数

  14. 14

    计算Tableau列中Null的出现次数

  15. 15

    计算列猪中的单词出现次数

  16. 16

    计算跨列的DataFrame中的出现次数

  17. 17

    TSQL计算列中的出现次数

  18. 18

    SQL - 计算列中的出现次数

  19. 19

    计算列中条纹的出现次数

  20. 20

    计算列的出现次数

  21. 21

    计算特定值相对于另一列中的值出现的次数

  22. 22

    我可以使用python“计算”json文件中的字段/名称出现的次数吗?我不需要字段中的值,但需要名称出现

  23. 23

    R:累计计算列值出现在其他列中的次数

  24. 24

    重击:根据y列中的值计算x列中值的出现次数

  25. 25

    计算列值出现的次数并将列添加到数据框中

  26. 26

    Excel:计算列中而不是数据透视表格式中的相似值行的出现次数

  27. 27

    计算多列中的出现次数并使用 R 计算统计信息

  28. 28

    Awk:如何计算字符串在各列之间的出现次数并在各行之间找到最大值?

  29. 29

    我如何计算一个独特值出现在列中的次数?

热门标签

归档