scan.sh (1454B)
1 #!/bin/bash 2 3 reset="$(tput sgr0)" 4 titleformat="$(tput bold)" 5 idformat="$(tput bold)" 6 dateformat="$(tput setaf 3)" 7 fromformat="$(tput setaf 7)" 8 subjectformat="$reset" 9 10 first=1 11 12 cols=$(tput cols) 13 14 while read -r line; 15 do 16 id=$(echo -n "$line" | cut -f 1) 17 date=$(echo -n "$line" | cut -f 2 | head -c 16) 18 from=$(utf8expr substr "$(echo -n "$line" | cut -f 3)" 1 10) 19 subject=$(echo -n "$line" | cut -f 4) 20 21 if [ $first -eq 1 ]; 22 then 23 #printf "${titleformat}%8s %16s %10s %s\n" "$id" "$date" \ 24 # "$from" "$subject" 25 first=0 26 else 27 ostr="$(printf "${dateformat}%10s${reset}" "$date")" 28 flen=$(($(utf8expr length "$date") + 2)) 29 ostr="${ostr} $(printf "${fromformat}%10s${reset}" "$from")" 30 flen=$(($flen + 10 + 2)) 31 ostr="${ostr} $(printf "${idformat}%s${reset}" "$id")" 32 flen=$(($flen + $(utf8expr length "$id") + 2)) 33 scols=$(($cols - $flen)) 34 35 printf "%s " "${ostr}" 36 slen=$(utf8expr length "$subject") 37 if [ $scols -lt 1 ] || [ $scols -gt $slen ]; 38 then 39 printf "${subjectformat}%s${reset}\n" "$subject" 40 else 41 pos=1 42 while [ $slen -gt 0 ]; 43 do 44 if [ $slen -gt $scols ]; 45 then 46 sslen=$scols 47 else 48 sslen=$slen 49 fi 50 51 sstr=$(utf8expr substr "$subject" $pos \ 52 $sslen | sed 's,^[[:space:]]*,,g') 53 if [ $pos -gt 1 ]; 54 then 55 printf "%${flen}s" " " 56 fi 57 printf "${subjectformat}%s${reset}\n" \ 58 "$sstr" 59 60 pos=$(($pos + $sslen)) 61 slen=$(($slen - $sslen)) 62 done 63 fi 64 fi 65 done 66