如何获取CSV中列中不同值的总数?

时间:2016-05-02 16:29:23

标签: bash csv

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

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

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

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

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

3 个答案:

答案 0 :(得分:2)

使用awk你可以这样做:

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

2

这个awk命令使用键$1,并将它们存储在一个看到的数组中。当第一次填充密钥时,其值增加到1。每当我们获得一个唯一的密钥时,我们会增加计数c并最终打印出来。

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

#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