我有一个名为test.csv
的CSV文件。它看起来像这样:
1,Color
1,Width
2,Color
2,Height
我想知道第一列中有多少个不同的值。在这种情况下,shell脚本应返回2
。
我试过运行sort -u -t, -k2,2 test.csv
,我在另一个问题上看到了它,但它打印出的信息比我需要的多得多。
如何编写一个shell脚本,在test.csv
的第一列中打印不同值的数量?
答案 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