[CentOS] [OT] Bash help

m.roth at 5-cent.us m.roth at 5-cent.us
Wed Oct 25 21:10:04 UTC 2017


Tony Mountifield wrote:
> In article
> <b5215baacd93a6e85efc59947f9b8ed9.squirrel at host290.hostmonster.com>,
>  <m.roth at 5-cent.us> wrote:
>> Warren Young wrote:
>> > On Oct 25, 2017, at 10:02 AM, Mark Haney <mark.haney at neonova.net>
>> wrote:
>> >>
>> >> I have a file with two columns 'email' and 'total' like this:
>> >>
>> >> me at example.com 20
>> >> me at example.com 40
>> >> you at domain.com 100
>> >> you at domain.com 30
>> >>
>> >> I need to get the total number of messages for each email address.
>> >
>> > This screams out for associative arrays.  (Also called hashes,
>> > dictionaries, maps, etc.)
>> >
>> > That does limit you to CentOS 7+, or maybe 6+, as I recall.  CentOS 5
>> is
>> > definitely out, as that ships Bash 3, which lacks this feature.
>> <snip>
>> Associative arrays?
>>
>> Awk! Awk! (No, I am not a seagull...)
>>
>> sort file | awk '{ array[$1] += $2;} END { for (i in array) { print i
>> "\t"
>> array[i];}'
>
> Why the sort? It doesn't matter in what order the lines are read.
> Wouldn't this give you the same?
>
> awk '{ array[$1] += $2;} END { for (i in array) { print i "\t"
> array[i];}}' <file
>
You're right, not really necessary in this case. I was working with a
couple of awk scripts here at work, and it was needed in the middle....

     mark




More information about the CentOS mailing list