awk ' # num.collapse | |
# Input: lines of form: string (tab) num1 [(space) num2] | |
# Output: lines of form: string (tab) fancy.num.list | |
# | |
# fancy.num.list contains items, separated by ", ", of form: num or num-num | |
# Sequence of input lines with same value of string is combined | |
# into a single output line. Each input line contributes either | |
# num or num-num to output line. | |
BEGIN { FS = OFS = "\t" } | |
{ sub(/ /, "\\(en", $2) } # use - if there is no en dash | |
$1 != p { p = $1 | |
if (NR > 1) printf "\n" | |
printf "%s\t%s", $1, $2 | |
next | |
} | |
{ printf ", %s", $2 } | |
END { if (NR > 0) printf "\n" } | |
' $* |