Nehmen wir an, ich habe 5 Nachrichten in /var/mail/ und ich möchte eine Nachricht nach der anderen lesen und dann eine Zeichenfolgensuche in dieser Mail durchführen, bevor ich mit der nächsten Nachricht fortfahre. Gibt es einen Befehl, mit dem ich jeweils eine Nachricht parsen kann?
Ich möchte ein Bash-Skript schreiben, das alle Nachrichten in einer mbox-Datei liest und sie dann einzeln liest, damit ich dann Betreff, An, Von und Status der Nachricht extrahieren kann (Bounceback-Code). Mein Plan war, grepmail zu verwenden, um die Anzahl der E-Mails in der Datei zu erhalten, und diese Anzahl dann in einer for-Schleife zu verwenden, um jeweils eine E-Mail abzurufen und sie den Text zu bearbeiten. Etwas wie:
$count = grepmail -r . /var/mail/user | awk '{print $2}'
for($i=1;$i<=$count;$i++) {
$content = *GetMessage* -number $i /var/mail/user
...
Do string operation on this message & save to $DelimitedData
...
}
$Delimiteddata
Ich kann nicht herausfinden, wie ich einzelne Nachrichten gleichzeitig abholen kann, um String-Operationen für sie auszuführen. Kann mir bitte jemand sagen, welcher Befehl/welches Programm mir dabei helfen kann, dies nicht interaktiv zu tun.
Akzeptierte Antwort:
Die formail
Tool von procmail (verfügbar in jeder Distribution, es ist ein Klassiker) ist genau für diesen Zweck konzipiert.
Grundlegende Verwendung:
formail -s myprogram --option
führt myprogram --option
aus auf jeder Mail der Reihe nach. Das Programm empfängt jede Mail auf seiner Standardeingabe.