using Linux cut, sort and uniq

随声附和 提交于 2019-12-06 04:17:19

问题


I have a list with population, year, and county and I need to cut the list, and then find the number of uniq counties.

The list starts off like this:

#Population,    Year,   County
3900,   1969,   Beaver
3798,   1970,   Beaver
3830,   1971,   Beaver
3864,   1972,   Beaver
3993,   1973,   Beaver
3976,   1974,   Beaver
4064,   1975,   Beaver

There is much more to this list, and many more counties. I have to cut out the county column, sort it, and then output the number of uniq counties. I tried this command:

 cut -c3- list.txt | sort -k3 | uniq -c

But this does not cut the third list, nor does it sort it alphabetically. What am I doing wrong?


回答1:


You can add a delimiter, which is a comma in your case:

cut -f 3 -d, list.txt | sort | uniq

then, -c specifies character position, rather than field, which is specified with -f.

To strip spaces in front you can pipe this all through, e.g. awk '{print $1}', i.e.

cut -f 3 -d, list.txt | awk '{print $1}' | sort | uniq

[edit]

Aaaaand. If you try to cut the 3rd field out, you are left with only one field after the pipe, so sorting on the 3rd field won't work, which is why I omitted it in my example. You get 1 field, you just sort on it and the apply uniq.




回答2:


You can use awk to extract third field (space delimited), and then do your sort/uniq stuff.

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


来源:https://stackoverflow.com/questions/21584727/using-linux-cut-sort-and-uniq

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!