1#! /bin/sh 2 3set -e 4 5PREFIX=$1 6shift 7 8trap 'rm -r $TMPDIR' 0 9TMPDIR=`mktemp -d` 10 11exec 3>/dev/null 12for f; do 13 while IFS=" 14" read -r LINE; do 15 case "$LINE" in 16 *$PREFIX:[0-9]*:\**) 17 NUM=`echo "$LINE" | sed "s/.*$PREFIX:\([0-9]*\).*/\1/"` 18 if [ -f $TMPDIR/$NUM ]; then 19 echo "$TMPDIR/$NUM already exits prior to $f" 20 exit 1 21 fi 22 exec 3>>$TMPDIR/$NUM 23 echo $f | sed 's,\.\./,,g' > $TMPDIR/.$NUM 24 /bin/echo "$LINE" | sed -e "s/$PREFIX:[0-9]*//" -e "s/:\*/*/" >&3 25 ;; 26 *$PREFIX:[0-9]*) 27 NUM=`echo "$LINE" | sed "s/.*$PREFIX:\([0-9]*\).*/\1/"` 28 if [ -f $TMPDIR/$NUM ]; then 29 echo "$TMPDIR/$NUM already exits prior to $f" 30 exit 1 31 fi 32 exec 3>>$TMPDIR/$NUM 33 echo $f | sed 's,\.\./,,g' > $TMPDIR/.$NUM 34 /bin/echo "$LINE" | sed "s/$PREFIX:[0-9]*//" >&3 35 ;; 36 *:\**) 37 /bin/echo "$LINE" | sed -e "s/:\*/*/" -e "s,/\*\*/,," >&3 38 echo >&3 39 exec 3>/dev/null 40 ;; 41 *) 42 /bin/echo "$LINE" >&3 43 ;; 44 esac 45 done < $f 46 echo >&3 47 exec 3>/dev/null 48done 49 50LASTFILE="" 51for f in $TMPDIR/*; do 52 if [ "$LASTFILE" != $(cat $TMPDIR/.$(basename $f) ) ]; then 53 LASTFILE=$(cat $TMPDIR/.$(basename $f) ) 54 echo "[ $LASTFILE ]" 55 fi 56 cat $f 57done 58 59