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" } ' $*