50 lines
825 B
Awk
50 lines
825 B
Awk
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
|
|
}
|