繁体   English   中英

使用Linux cut,sort和uniq

[英]using Linux cut, sort and uniq

我有一个包含人口,年份和县的列表,我需要删除列表,然后找到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

但这不会削减第三个列表,也不会按字母顺序排序。 我究竟做错了什么?

您可以添加分隔符,在您的情况下是逗号:

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出第三个字段,你只剩下管道后面的一个字段,所以在第三个字段上排序将不起作用,这就是我在我的例子中省略它的原因。 你得到1个字段,你只需对它进行排序并应用uniq

您可以使用awk提取第三个字段(空格分隔),然后执行sort / uniq。

awk '{print $3}' list.txt |sort |uniq -c

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM