Bash 如何获取CSV中列中不同值的总数?
我有一个名为Bash 如何获取CSV中列中不同值的总数?,bash,csv,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的第一列中不同值的数量?使用awk可以执行以下操作: awk -F, '!seen[$1]++{c++} END{print c}'
test.CSV
的CSV文件。看起来是这样的:
1,Color
1,Width
2,Color
2,Height
我想知道第一列中有多少不同的值。在这种情况下,shell脚本应该返回2
我试着运行sort-u-t,-k2,2 test.csv,这是我在另一个问题上看到的,但它输出的信息远远超出了我的需要
如何编写一个shell脚本来打印test.csv
的第一列中不同值的数量?使用awk可以执行以下操作:
awk -F, '!seen[$1]++{c++} END{print c}' file
2
此awk命令使用key$1
,并将它们存储在一个数组中。第一次填充密钥时,其值将递增为1。每次我们得到一个唯一的密钥时,我们都会增加计数c
,并最终打印出来。使用awk,您可以执行以下操作:
awk -F, '!seen[$1]++{c++} END{print c}' file
2
此awk命令使用key$1
,并将它们存储在一个数组中。第一次填充密钥时,其值将递增为1。每次我们得到一个唯一的密钥,我们都会增加countc
,并最终打印出来。或
cut -d, -f1 file | sort -u | wc -l
使用cut
提取第一列,然后使用sort
获取唯一值,然后使用wc
对其进行计数。或
cut -d, -f1 file | sort -u | wc -l
#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
使用cut
提取第一列,然后使用sort
获取唯一值,然后使用wc
对其进行计数
#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