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

Use*_*ame 2 csv bash

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

1,Color
1,Width
2,Color
2,Height
Run Code Online (Sandbox Code Playgroud)

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

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

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

anu*_*ava 5

使用 awk 你可以这样做:

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

2
Run Code Online (Sandbox Code Playgroud)

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