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?
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
.
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