Aginor
Aginor

Reputation: 188

Combining lines with same string in Bash

I have a file with a bunch of lines that looks like this:

3 world 3 moon 3 night 2 world 2 video 2 pluto 1 world 1 pluto 1 moon 1 mars

I want to take each line that contains the same word, and combine them while adding the preceding number, so that it looks like this:

6 world 4 moon 3 pluto 3 night 2 video 1 mars

I've been trying combinations with sed, but I can't seem to get it right. My next idea was to sort them, and then check if the following line was the same word, then add them, but I couldn't figure out how to get it to sort by word rather than the number.

Upvotes: 2

Views: 29

Answers (1)

Karoly Horvath
Karoly Horvath

Reputation: 96258

Sum and sort:

awk -F" " '{c[$2]+=$1} END {for (i in c){print c[i], i}}' | sort -n -r

Upvotes: 3

Related Questions