GNU/Linux >> Znalost Linux >  >> Linux

Jak číst jednu zprávu najednou z /var/mail?

Ř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.


Linux
  1. Linux – Jak číst z /proc/$pid/mem pod Linuxem?

  2. Jak přenosné jsou /dev/stdin, /dev/stdout a /dev/stderr?

  3. Ssh nefunguje z jednoho konkrétního počítače?

  1. Linux – Jak otestovat, zda je blokové zařízení pouze pro čtení z /sys nebo /proc?

  2. Rozdíl mezi /var/log/messages, /var/log/syslog a /var/log/kern.log?

  3. CentOS / RHEL :Jak otočit soubory /var/log/wtmp a /var/log/btmp pomocí logrotate

  1. Django static_root v /var/www/... - žádná oprávnění ke collectstatic

  2. Jak zjistit, ze které složky běží proces?

  3. Jak zakázat Gnome vytváření dokumentů/videí/ v HOME?