BEGIN { RS = "\x0c" FS = "\n" } /^message}/ { mheader = header mpart = part mparts = parts level = 0 multipart = "" header = "" part = "" parts = "" } /^header{/ { header = $0 } /^(part|attachment)}/ { level-- } /^(part|attachment){/ { parts = sprintf("%s\n%"(2*level)"s%s", parts, "", substr($1, index($1, "ID"))) level++ } # /^part{ ID: [[:digit:]]+, Content-type: multipart\/alternative/ { # multipart = "alternative" # } # /^part{ ID: [[:digit:]]+, Content-type: multipart\/mixed/ { # multipart = "mixed" # } /^part{ ID: [[:digit:]]+, Content-type: text\/plain/ { part = $0 } END { split(mheader, a, "\n") delete a[1] # delete a[2] for (line in a) { print a[line] } split(mpart, a, "\n") delete a[1] for (line in a) { print a[line] } print "Parts:"mparts }