2010-11-19 16 views
0

Ich bin neu im Shell-Scripting und der Programmierung. Ich suche nach einer Anleitung, wie ich bestimmte Informationen aus einer Textdatei mit Tausenden von Zeilen analysieren kann. Insbesondere muss ich eine E-Mail-Adresse von jeder Zeile analysieren. Die Linie sieht wie folgt aus:Daten analysieren, Daten nach und vor bestimmten Zeichen auswählen

"1272574001.H742765P10724.host.domain.com,S=4155:Return-path: `<[email protected]>` 

Ich mag würde die E-Mail-Adresse (mit Ausnahme des < und >) und führen Sie dann eine Update-Anweisung über mysql mit der E-Mail-Adresse als Wert extrahieren.

Gibt es irgendwo ein Beispiel, auf das ich meine Bedürfnisse stützen könnte?

Was Scripting-Tool würde ich verwenden, wie sage ich diesem Tool, um alle Inhalte zwischen den < und > greifen?

Wie kann ich dann (innerhalb eines Skripts) diesen Wert verwenden, um einen DB-Datensatz zu aktualisieren?

p.s. Ich versuche, im Wesentlichen diese E-Mail-Adressen aus einer Kontaktdatenbank zu austragen ..

Die SQL-Anweisung, ist ausgeführt werden muss:

UPDATE contact_master SET subscribed='No' WHERE email=<value> 
+1

Was meinen Sie * ohne die $ und $ *? Was $ und $? –

+1

@Sinan: Es ist doppelt so viel Geld. – Axeman

+0

Ich denke, er meint die spitzen Klammern um die E-Mail-Adresse. Ich denke, er konnte nicht herausfinden, wie man ihnen mit Markdown entkommen konnte. –

Antwort

2

Sie scheinen für reguläre Ausdrücke zu suchen. Ich schlage vor, das Lesen der perlre manpage (online verfügbar here), dann etwas zu tun, wie:

($addr) = /Return-path: `<([^>]+)>`/; 
0
sed -n '`s/<\([^>]\+\)>`$/\1/' inputfile | while read -r address 
do 
    echo "UPDATE contact_master SET subscribed='No' WHERE email='$address'" 
done | mysql databasename