Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Streameditor mit Regular Expressions

  1. #1
    Registrierter Benutzer
    Registriert seit
    14.02.2001
    Ort
    Stuttgart
    Beiträge
    51

    Question [GELÖST} Streameditor mit Regular Expressions

    Hallo,

    ich baue mir gerade ein SED-Script, das aus einem Adressdatenwust, den ich mir mit pdf2text aus einer PDF-Datei erzeugt habe, eine CSV-Datei für einen Datenimport erzeugt.

    Zum Beispiel diese Zeile in einer Datei Input.txt:
    Code:
    "+siggset+ print & media AG", "Dr. Rudolf-Eberle-Str. 47 D-79774 Albbruck Tel.: +49 (7753) 9219 0 Fax.: +49 (7753) 9219 99 www.siggset.com info@siggset.com
    wird durch
    Code:
    sed 's/ D-/", "/' Input.txt
    zu
    Code:
    "+siggset+ print & media AG", "Dr. Rudolf-Eberle-Str. 47", "79774 Albbruck Tel.: +49 (7753) 9219 0 Fax.: +49 (7753) 9219 99 www.siggset.com info@siggset.com
    und so weiter.

    Ich suche jetzt eine SED-Regel, die die PLZ+Leerzeichen erkennt und dann nicht die PLZ ersetzt, sondern nur das Leerzeichen nach den fünf Ziffern mit '", "' ersetzt.

    Von der Logik her, stelle ich mir den einen Teil des Ausdruckes so vor:
    Code:
    's/[0-9]{5} /'
    Was nach beliebigen fünf Zifern und einem anschliessenden Leerzeichen suchen soll.

    Ich komme aber nicht ganz klar damit, vor allem nicht mit der Bedingung, daß nicht die 5 Ziffern plus Leerzeichen ersetzt werden soll, sondern nur das Leerzeichen.

    Kennt sich mit der Vorgehenweise jemand hier aus?

    Grüße

    Eagle
    Geändert von Eagle (19-11-2010 um 13:23 Uhr)

  2. #2
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    Code:
    sed -r 's/([0-9]{5}) /\1/'

  3. #3
    Registrierter Benutzer
    Registriert seit
    14.02.2001
    Ort
    Stuttgart
    Beiträge
    51
    Danke John,

    auf die runden Klammern wäre ich jetzt nie gekommen. Was macht jetzt expizit "\1"? Ich merke jetzt, dass aus

    '79774 Albbruck' ein '79774Albbruck' wird.

    Es tut sich was, besser wäre natürlich '79774, Albbruck'. Ich will ja das Leerzeichen durch ein "Komma+Leerzeichen" ersetzen,

  4. #4
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    Die runden Klammern erstellen eine adressierbare Gruppe. Die Gruppen werden mit \1, \2 usw. angesprochen. Damit das funktioniert, muss sed mit erweiterten regulären Ausdrücken arbeiten, daher der Parameter -r beim Aufruf.

  5. #5
    Registrierter Benutzer
    Registriert seit
    14.02.2001
    Ort
    Stuttgart
    Beiträge
    51
    Okay,

    ich habe die Lösung:

    Code:
    sed -r 's/([0-9]{5}) /\1, /'

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •