I have a simple file like this:
Term1 column2 column3
Term2 column2 column3
Term3 column2 column3
Term2 column2 column3
Term1 column2 column3
Term2 column2 column3
If I sort on the first column and get a count for the terms:
cut -f1 -d ' ' file | sort | uniq -c
The results shows me this:
2 Term1
3 Term2
1 Term3
But I would rather see this:
Term1 2
Term2 3
Term3 1
Is there an easy way to "change" the uniq output to do this or would i still need to pipe the output to sed or awk to get this?
This seems a simple question so my apologies if this was asked before.
Uniq doesn't give the option to rearrange output.
You can do this using awk
:
cut -f1 -d ' ' file | sort | uniq -c | awk '{print $2, $1}'
Term1 2
Term2 3
Term3 1
Or using awk
and then sort (recommended)
$awk '{a[$1]++} END{for (i in a) print i,a[i] }' file | sort -k1
Term1 2
Term2 3
Term3 1
The shortest one with GNU datamash tool:
datamash -Ws -g1 count 1 <file
The output:
Term1 2
Term2 3
Term3 1
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With