#!/bin/ksh test "$1" = "-h" && printf "\nUsage: $0 [file]\n\n" && exit 0 test -f "$1" && file="$1" || file="" test -z "$file" && stub="stdin" || stub="$file" #|| (printf "\nERROR: $1 is not a file\n\n"; exit 1) #printf "$0 $file into $stub.*\n" test -f /usr/xpg4/bin/sed && SED=/usr/xpg4/bin/sed || SED=/usr/bin/sed test -f /usr/xpg4/bin/awk && AWK=/usr/xpg4/bin/awk || AWK=/usr/bin/awk $SED 's/^ *\([0-9][0-9]*\):/\1,/' $file | \ $AWK -v stub="$stub" 'BEGIN{FS=","} { #print ">" $0 "<"; if ($1 ~ /^[0-9]+$/) { if (NF > 1) { line = $2; for (i=3; i<=NF; i++) { line = line FS $i; } #print $1 ">" line "<"; print line >> stub"."$1; } else { #print $1 "><"; print "" >> stub"."$1; } } else { #print "X>" $0 "<"; print $0 >> stub".00"; } #print ""; } ' # end of awk script exit 0 # the original program test -z "$1" && printf "\nUsage: $0 file1 [file2] [file3] ...\n\n" && exit 1 for file in $@ do labels=$(egrep "^ *[0-9]+:" $file | sed "s/:.*$//" | sort | uniq) for label in $labels do printf "appending to $file.$label . . . " egrep "^ *${label}:" $file | sed "s/^ *${label}://" >> $file.$label printf "done\n" done done