Using awk rule idea.
Code:
ff=file.txt
sort -t";" -k3 -k2 $ff | \
awk -F";" -v keyfld=3 '
# - next key value
$keyfld != prevkey {
print toupper($keyfld)
}
# - every line
{
print $0
prevkey=$keyfld
}
'
Or using ksh
Code:
prevkey=""
oifs="$IFS"
typeset -u key
sort -t";" -k3 -k2 $ff | while read line
do
IFS=";"
set -A flds -- $line # to array, 1st index 0
IFS="$oifs"
key=${flds[2]}
[ "$prevkey" != "$key" ] && print "$key"
print "$line"
prevkey=$key
done
|