Řekněme, že mám 5 zpráv ve /var/mail/ a chci si přečíst jednu zprávu po druhé a poté v této poště provést nějaké vyhledávání řetězců, než přejdu k další zprávě. Existuje příkaz, který mohu použít k analýze jedné zprávy najednou?
Chci napsat bash skript, který bude číst všechny zprávy v souboru mbox a pak je číst jednu po druhé, abych pak mohl extrahovat Předmět, Komu, Od a Stav zprávy (kód zpětného hlášení). Můj plán byl použít grepmail k získání počtu e-mailů v souboru a pak použít tento počet ve smyčce for k získání jednoho e-mailu po druhém a provést operaci s textem. Něco jako:
$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
Nemohu přijít na to, jak vyzvednout jednu zprávu najednou, abych s nimi provedl operaci řetězce. Může mi někdo prosím poradit, který příkaz/program mi může pomoci udělat to neinteraktivně.
Přijatá odpověď:
formail
nástroj od procmailu (k dispozici v jakékoli distribuci, je to klasika) je navržen přesně pro tento účel.
Základní použití:
formail -s myprogram --option
spustí myprogram --option
na každý mail postupně. Program přijímá každý e-mail na jeho standardním vstupu.