awk '
/once was/ { animal = $5 }
/he ate/ { print $4, animal } ' |
sort -u |
awk '
NR == 1 { prev = $1; printf "%s %s", $1, $2 }
NR > 1 { if (prev == $1) { printf " %s", $2 }
else { prev = $1; printf "\n%s %s", $1, $2 } }
END { printf "\n" } ' |
awk '
{ if (NR > 1) { print "" }
print "Food:", $1, "Animals who ate it:", NF-1
print "========"
for (N=2; N<=NF; N++) { print $N } } '
YXdrICcKICAgIC9vbmNlIHdhcy8geyBhbmltYWwgPSAkNSB9CiAgICAvaGUgYXRlLyAgIHsgcHJpbnQgJDQsIGFuaW1hbCB9ICcgfApzb3J0IC11IHwKYXdrICcKICAgIE5SID09IDEgeyBwcmV2ID0gJDE7IHByaW50ZiAiJXMgJXMiLCAkMSwgJDIgfQogICAgTlIgPiAgMSB7IGlmIChwcmV2ID09ICQxKSB7IHByaW50ZiAiICVzIiwgJDIgfQogICAgICAgICAgICAgIGVsc2UgeyBwcmV2ID0gJDE7IHByaW50ZiAiXG4lcyAlcyIsICQxLCAkMiB9IH0KICAgIEVORCAgICAgeyBwcmludGYgIlxuIiB9ICcgfAphd2sgJwogICAgeyBpZiAoTlIgPiAxKSB7IHByaW50ICIiIH0KICAgICAgcHJpbnQgIkZvb2Q6IiwgJDEsICJBbmltYWxzIHdobyBhdGUgaXQ6IiwgTkYtMQogICAgICBwcmludCAiPT09PT09PT0iCiAgICAgIGZvciAoTj0yOyBOPD1ORjsgTisrKSB7IHByaW50ICROIH0gfSAn
stdin
VGhlcmUgb25jZSB3YXMgYSBEb2cKCldlZG5lc2RheSBoZSBhdGUgQXBwbGVzIApUaHVyc2RheSBoZSBhdGUgQXBwbGVzCkZyaWRheSBoZSBhdGUgQXBwbGVzClNhdHVyZGF5IGhlIGF0ZSBjYXJyb3RzCgpUaGVyZSBvbmNlIHdhcyBhIEJlYXIKClR1ZXNkYXkgaGUgYXRlIGNhcnJvdHMKV2VkbmVzZGF5IGhlIGF0ZSBjYXJyb3RzClRodXJzZGF5IGhlIGF0ZSBjaGlja2Vu
There once was a Dog
Wednesday he ate Apples
Thursday he ate Apples
Friday he ate Apples
Saturday he ate carrots
There once was a Bear
Tuesday he ate carrots
Wednesday he ate carrots
Thursday he ate chicken