我有一个人口,年份和县的列表,我需要删除列表,然后找到uniq县的数量。
列表如下所示:
#Population, Year, County
3900, 1969, Beaver
3798, 1970, Beaver
3830, 1971, Beaver
3864, 1972, Beaver
3993, 1973, Beaver
3976, 1974, Beaver
4064, 1975, Beaver
此列表还有更多,还有更多的县。我必须删除县列,对其进行排序,然后输出uniq县的数量。我试过这个命令:
cut -c3- list.txt | sort -k3 | uniq -c
但这不会削减第三个列表,也不会按字母顺序排序。我做错了什么?
答案 0 :(得分:10)
您可以添加分隔符,在您的情况下是逗号:
cut -f 3 -d, list.txt | sort | uniq
然后,-c
指定字符位置,而不是使用-f
指定的字段。
要剥去前面的空格,你可以通过它来管道,例如awk '{print $1}'
,即
cut -f 3 -d, list.txt | awk '{print $1}' | sort | uniq
[编辑]
Aaaaand。如果你尝试cut
第3个字段,你只剩下管道后面的一个字段,所以第3个字段的排序将不起作用,这就是我在我的例子中省略它的原因。您获得1个字段,您只需对其进行排序并应用uniq
。
答案 1 :(得分:4)
您可以使用awk提取第三个字段(空格分隔),然后执行sort / uniq。
awk '{print $3}' list.txt |sort |uniq -c