using Linux cut, sort and uniq

cut, linux, sorting, uniq

Solution

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

Problem

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?

Original source