#! /usr/bin/gawk -f # lsmbox: "spis tresci" pliku mbox (kolekcji emaili) BEGIN{ RS = "\nFrom [^\n]*\n"; # kazdy mail bedzie rekordem FS = "\n\n"; # $1 to naglowki, $2 [, $3 itd.] - reszta "tput cols" | getline cols; # sprawdzic czy zwrocilo cos sensownego! close("tput cols"); #print cols cols -= 17; subjw = int(0.6 * cols); sendw = cols - subjw; fmt = sprintf("%%-3d %%-%d.%ds %%4d/%%-6d %%-%d.%ds\n", sendw, sendw, subjw, subjw); #print sendw, subjw; } NR == 1{ # bo przed pierwszym "From " nie ma "\n"... sub(/^From [^\n]*\n/, ""); } { split($1, headers, "\n"); sender = subject = ""; for (k in headers) # zaniedbalem naglowki z kontynuacja - poprawic! { if (headers[k] ~ /^From: /) { sender = headers[k]; sub(/^From: /, "", sender); } else if (headers[k] ~ /^Subject: /) { subject = headers[k]; sub(/^Subject: /, "", subject); } } nbytes = length($0); gsub(/[^\n]+/, ""); nlines = length($0); #printf "%-3d %-40.40s %4d/%-6d %-50.50s\n", NR, sender, nlines, nbytes, subject; printf fmt, NR, sender, nlines, nbytes, subject; }