sed negieren

  • Hallo,

    folgendes Problem.

    Ich habe eine Zeile die so aussieht...

    From test@test.de Mon DEC 4 16:08:50 MET 2003

    Nun habe ich einen sed Befehl, welcher mir das test zwischen dem @ und .de rauszieht. Ich möchte aber, dass er alles löscht außer das angesprochene test.
    Ich bekomme diese Mail von 3 verschiedenen Firmen und benötige das angesprochene als Eintrag einer Datenbank.

    Wie kann ich den sed Befehl negieren?

    schellness

  • Deine Problembeschreibung verwirrt mich auch sehr, aber diese Zeile solltest Du eigentlich leicht so anpassen können, daß sie das macht, was Du willst, was immer es auch ist:

    Code
    echo "From [email]test@test.de[/email] Mon DEC 4 16:08:50 MET 2003" | sed -e 's/\(.*\)@\(.*\)\(.de.*\)/\1/g'

    Mit \1 kriegst Du bei diesem Beispiel: "From test"
    Mit \2 kommt: "test" (das zwischen dem @ und dem .de)
    Mit \3 kommt: ".de Mon DEC 4 16:08:50 MET 2003"

    Falls Du alles außer dem "test" in der Mitte willst (so verstehe ich Deine Frage am ehesten), könntest Du das so machen:

    Code
    echo "From [email]test@test.de[/email] Mon DEC 4 16:08:50 MET 2003" | sed -e 's/\(.*\)@\(.*\).de\(.*\)/\1\3/g'

    Dann hast Du: "From test Mon DEC 4 16:08:50 MET 2003"

    Hilft das?

  • hallo,

    also ich wollte in der tat nur das test zwischen dem @ und dem .de haben. die mails würden von 3 verschiedenen absendern kommen

    1. blabla@agito.de
    2. tralala@discount24.de
    3. schubidu@mexx.de

    ich brauche für statistische auswertungen nur agito, discount24 oder mexx. der rest der zeile...

    From trallaaalalaaa@mexx.de Fri Jan 9 10:55:10 MET 2004

    ...soll entfernt werden. ich nutze inzwischen folgenden code...

    SHOP=`grep 'From' $INFILE | cut -d"@" -f2 | cut -d"." -f1`

    danke trotzdem für die bemühungen!!! :thumb:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!