stdout filtern und zerschneiden

12/04/2009 - 15:33 von Florian Lindner | Report spam
Hallo,

Python bietet eine Option an, einen kleinen Testmailserver direkt zu
starten der die Mails einfach ausgibt:

florian@horus ~: python -m smtpd -n -c DebuggingServer localhost:1025

- MESSAGE FOLLOWS -
Message-Id: <BFD257B0-E4BB-4B76-9FDD-6CEB904FC5B0@xgm.de>
From: Florian Lindner <Florian.Lindner@xgm.de>
To: Florian Lindner <F.Lindner@mytum.de>
Mime-Version: 1.0 (Apple Message framework v930.3)
Subject: blubb2
Date: Sun, 12 Apr 2009 15:12:43 +0200
X-Mailer: Apple Mail (2.930.3)
X-Peer: 127.0.0.1

blubb2
END MESSAGE


Meine Shell ist zsh. Nun würde ich diese Ausgabe gerne noch ein wenig
filtern und weiterverarbeiten.
Zum einen sollen die Begin und End Tags weg. Leider funktioniert das
schon nicht richtig:

python -m smtpd -n -c DebuggingServer localhost:1025 | grep -v "MESSAGE"

gibt gar nichts mehr aus. Ebenso:

python -m smtpd -n -c DebuggingServer localhost:1025 2>&1 | grep -v
"MESSAGE"

Zum anderen will ich die Ausgabe an ein weiteres Programm weiterleiten.
Dies soll aber jeweils eine komplette Mail entgegennehmen. Ich bràuche
also ein Programm dazwischen, was den Stream quasi bei END MESAGE
auseinanderschneidet und meinem Programm übergibt und danach stdout zu
meinem Programm wieder schließt. Ich hoffe, dass es einigermaßen klar
ist, was ich will... ;-)

Vielen Dank für Hilfe!

Florian
 

Lesen sie die antworten

#1 Markus Wichmann
12/04/2009 - 21:28 | Warnen spam
Florian Lindner wrote:
Hallo,

Python bietet eine Option an, einen kleinen Testmailserver direkt zu
starten der die Mails einfach ausgibt:

~: python -m smtpd -n -c DebuggingServer localhost:1025

- MESSAGE FOLLOWS -
Message-Id:
From: Florian Lindner
To: Florian Lindner
^^^^^^^^^^^^^^^^^^^^^^^
Mime-Version: 1.0 (Apple Message framework v930.3)
Subject: blubb2
Date: Sun, 12 Apr 2009 15:12:43 +0200
X-Mailer: Apple Mail (2.930.3)
X-Peer: 127.0.0.1

blubb2
END MESSAGE




Bist du dir ganz sicher, dass du das willst?


Meine Shell ist zsh. Nun würde ich diese Ausgabe gerne noch ein wenig
filtern und weiterverarbeiten.
Zum einen sollen die Begin und End Tags weg. Leider funktioniert das
schon nicht richtig:

python -m smtpd -n -c DebuggingServer localhost:1025 | grep -v "MESSAGE"

gibt gar nichts mehr aus. Ebenso:

python -m smtpd -n -c DebuggingServer localhost:1025 2>&1 | grep -v
"MESSAGE"




Typischer Fall für sed:

... | sed -n '1!p' | sed -n '$!p' | ...

Ich habe keine Möglichkeit gefunden, beides zu vereinen.

Zum anderen will ich die Ausgabe an ein weiteres Programm weiterleiten.
Dies soll aber jeweils eine komplette Mail entgegennehmen. Ich bràuche
also ein Programm dazwischen, was den Stream quasi bei END MESAGE
auseinanderschneidet und meinem Programm übergibt und danach stdout zu
meinem Programm wieder schließt. Ich hoffe, dass es einigermaßen klar
ist, was ich will... ;-)




Äh... nein. Also, du willst, dass die beschnittene Mail sowohl in dein
Programm als auch auf den Bildschirm kommt? Da gibt es zwei Methoden:

Die traditionelle:
... | tee $(tty) | programm

Die zsh-spezifische:
setopt multios
TRM=$(tty)
... >$TRM | programm

Vielen Dank für Hilfe!

Florian



HTH,
Markus

GUI - ein Hintergrundbild und zwölf XTerms

vim -c "exec \"norm iwHFG#NABGURE#IVZ#UNPXRE\"|%s/#/ /g|norm g??g~~"

Ähnliche fragen