【问题标题】:How do I get the total number of distinct values in a column in a CSV?如何获取 CSV 列中不同值的总数?
【发布时间】:2016-08-27 11:55:54
【问题描述】:

我有一个名为 test.csv 的 CSV 文件。它看起来像这样:

1,Color
1,Width
2,Color
2,Height

我想知道第一列中有多少不同的值。在这种情况下,shell 脚本应该返回 2

我尝试运行 sort -u -t, -k2,2 test.csv,我在另一个问题上看到了它,但它打印出的信息比我需要的多得多。

如何编写一个 shell 脚本来打印test.csv 第一列中不同值的数量?

【问题讨论】:

    标签: bash csv


    【解决方案1】:

    使用 awk 你可以做到:

    awk -F, '!seen[$1]++{c++} END{print c}' file
    
    2
    

    此 awk 命令使用密钥 $1,并将它们存储在可见的数组中。当第一次填充键时,其值递增为 1。每次获得唯一键时,我们都会增加计数 c 并在最后打印出来。

    【讨论】:

      【解决方案2】:
      #List the first column of the CSV, then sort and filter uniq then take count. 
      
      awk -F, '{print $1}' test.csv  |sort -u  |wc -l
      

      忽略标题:

         awk -F, 'NR>1{print $1}' test.csv  |sort -u  |wc -l
      

      【讨论】:

      • 如何忽略标题行?
      【解决方案3】:

      或者

      cut -d, -f1 file | sort -u | wc -l
      

      使用cut 提取第一列,然后使用sort 获取唯一值,然后使用wc 对它们进行计数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-06
        • 2021-08-05
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        相关资源
        最近更新 更多