Anzeige:
Ergebnis 1 bis 10 von 10

Thema: wie mit grep ausdrücke in einer datei finden und ersetzen?

  1. #1
    Not Redmond but RedHat ;) Avatar von mdkuser
    Registriert seit
    May 2003
    Beiträge
    1.210

    Question wie mit grep ausdrücke in einer datei finden und ersetzen?

    Hallo,

    wie lautet das kommando um mit grep den inhalt einer datei nach "xyz" zu durchsuchen und den ausdruck "xyz" durch "abc" zu ersetzen?
    aus der man page werde ich nicht schlau...
    danke!
    Zenwalk current
    Intel P4 3,0 GHz, 1 GB RAM, AOpen Mainboard, Ge-Force 7600GS AGP, Sound onBoard, 2x 80 GB HDD, DVD Brenner, DVD-ROM, Realtek 10/100Mbit NIC onBoard

  2. #2
    Registrierter Benutzer Avatar von drcux
    Registriert seit
    Oct 2003
    Beiträge
    6.989
    sed 's#suchtextt#hierderneutext#g' test.txt > neuetest.txt

    http://www.linuxfibel.de/sed.htm

  3. #3
    komplett "ausgebleicht" Avatar von Der Gestreifte
    Registriert seit
    May 2003
    Ort
    904**
    Beiträge
    3.247
    Code:
    maddin@captin:maddin$ man grep |head
    Formatiere grep(1) neu, bitte warten...
    GREP(1)            Dienstprogramme für Benutzer           GREP(1)
    
    
    
    BEZEICHNUNG
           grep - durchsucht Dateien nach Ausdrücken
    
    SYNTAX
           grep [-CVbchilnsvwx] [-Anzahl] [-AB Anzahl] [[-e] Ausdruck
           |-f Datei] [Datei...]
    maddin@captin:maddin$ man sed |head
    Formatiere sed(1) neu, bitte warten...
    SED(1)             Dienstprogramme für Benutzer            SED(1)
    
    
    
    BEZEICHNUNG
           sed  -  (stream  editor) ist ein Editor zur nicht-interak_
           tiven Textbearbeitung
    Das Kommando gibt es nicht. "sed" ist, was Du sucht, nicht "grep".
    "sed s/ausdruck/ersetzung//" datei.txt > neue.txt"

  4. #4
    Not Redmond but RedHat ;) Avatar von mdkuser
    Registriert seit
    May 2003
    Beiträge
    1.210
    Hey, danke für die info! Ja, sed, genau! LOL, man muss halt wissen nach was man suchen muss! Danke euch allen!


    ps:
    sed 's#suchtextt#hierderneutext#g' test.txt > neuetest.txt
    das klappt ganz gut, allerdings wäre es besser, wenn man es nicht in eine neue Datei schreiben lassen müsste, sondern es direkt in der Orginaldatei ändern lassen könnte. Geht das irgendwie?
    Geändert von mdkuser (16.03.04 um 14:33 Uhr)
    Zenwalk current
    Intel P4 3,0 GHz, 1 GB RAM, AOpen Mainboard, Ge-Force 7600GS AGP, Sound onBoard, 2x 80 GB HDD, DVD Brenner, DVD-ROM, Realtek 10/100Mbit NIC onBoard

  5. #5
    komplett "ausgebleicht" Avatar von Der Gestreifte
    Registriert seit
    May 2003
    Ort
    904**
    Beiträge
    3.247
    Nein, das geht nicht.
    "cp -b neuetest.txt test.txt" tut aber fein und legt ein Backup der originalen an.

  6. #6
    Not Redmond but RedHat ;) Avatar von mdkuser
    Registriert seit
    May 2003
    Beiträge
    1.210
    ok, danke!
    Zenwalk current
    Intel P4 3,0 GHz, 1 GB RAM, AOpen Mainboard, Ge-Force 7600GS AGP, Sound onBoard, 2x 80 GB HDD, DVD Brenner, DVD-ROM, Realtek 10/100Mbit NIC onBoard

  7. #7
    ... Avatar von drunkenPenguin
    Registriert seit
    Jan 2003
    Ort
    Hamsterdam
    Beiträge
    2.264
    Sowas ähnliches wollte ich auch mal machen.
    Jaspers Beitrag aus diesem Thread hat mir dabei sehr weitergeholfen. Natürlich geht das auch mit sed, aber das separate Speichern entfällt mit Jaspers Lösung.

    In Deinem konkreten Fall heißt es dann so:

    perl -pi -e 's/xyz/abc/g' test.txt


    Gruß,
    Daniel

  8. #8
    Der Linuxkenner Avatar von tobgle
    Registriert seit
    Aug 2002
    Beiträge
    313
    Um direkt Textstellen ersetzen zu lassen gibt es das Tool replace.
    Das ist allerdings nicht bei jeder Standardinstallation dabei und kommt
    glaub ich mit MySQL.

    replace 'old' 'new' -- filename

    Greetz...
    Wie viele Microsoft-Ingenieure braucht man, um eine Glühbirne zu wechseln? - Keinen. Die erklären die Dunkelheit zum Industriestandard.

  9. #9
    Not Redmond but RedHat ;) Avatar von mdkuser
    Registriert seit
    May 2003
    Beiträge
    1.210
    Danke euch allen für die Hinweise! Hilft mir echt weiter!
    Zenwalk current
    Intel P4 3,0 GHz, 1 GB RAM, AOpen Mainboard, Ge-Force 7600GS AGP, Sound onBoard, 2x 80 GB HDD, DVD Brenner, DVD-ROM, Realtek 10/100Mbit NIC onBoard

  10. #10
    Registrierter Benutzer
    Registriert seit
    Mar 2002
    Beiträge
    1.648
    Das "in-place editing", das drunkenPenguin meint, können moderne Versionen von sed mit der Option -i übrigens auch.

Lesezeichen

Berechtigungen

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