Anzeige:
Ergebnis 1 bis 6 von 6

Thema: mit sed einen Ausdruck in einer Zeile suchen und ganze Zeile ersetzen

  1. #1
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    39

    Lightbulb mit sed einen Ausdruck in einer Zeile suchen und ganze Zeile ersetzen

    Hallo Forum,

    folgendes Problem:

    Code:
    $ cat datei.txt
    wert1 = Yes
    # wert2 = No
    # wert3 = Yes
    $ sed -e 's/*wert3.*/wert3 = No/g' datei.txt
    wert1 = Yes
    # wert2 = No
    wert3 = No
    Es hakt beim roten *: Wenn wert3 an beliebiger Stelle in einer Zeile gefunden wird, soll die ganze Zeile ersetzt werden.

    who nose?

    piccus
    Geändert von piccus (23.05.08 um 06:41 Uhr)

  2. #2
    Registrierter Benutzer Avatar von Veierabend
    Registriert seit
    Oct 2007
    Ort
    Meck Pomm
    Beiträge
    243
    Schnellschuss:
    Code:
    sed 's/.*wert3.*/wert3 = No/g'
    Wildcards sind bei sed und co bissl anders als in der Shell. Der Punkt steht für ein beliebiges Zeichen und der Stern dahinter für ein beliebig oftes Auftreten (0 mal bis undendlich oft).

    grEetZ

  3. #3
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    39
    Danke,

    da hab ich direkt noch eine Frage: Wie veranlsse ich sed die Änderung direkt in die Datei.txt zu schreiben, ohne dass ich eine neue Datei2.txt erzeugen muss, die dann mit mv zurückbebenannt werden muss...

  4. #4
    Registrierter Benutzer
    Registriert seit
    Apr 2007
    Beiträge
    121
    Zitat Zitat von piccus Beitrag anzeigen
    Danke,

    da hab ich direkt noch eine Frage: Wie veranlsse ich sed die Änderung direkt in die Datei.txt zu schreiben, ohne dass ich eine neue Datei2.txt erzeugen muss, die dann mit mv zurückbebenannt werden muss...
    Such mal in der manpage von sed nach -i

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    39
    fast alles prima. Das geht:

    Code:
    server:~# sed -i "s/.*Port 22.*/Port 222/g" /etc/ssh/sshd_config
    aber das geht nicht:

    Code:
    client:~# ssh server sed -i "s/.*Port 22.*/Port 222/g" /etc/ssh/sshd_config
    root@server's password:
    sed: -e Ausdruck #1, Zeichen 8: unterminated `s' command
    ssh läuft ansonsten 100pro.


  6. #6
    Registrierter Benutzer Avatar von buzz768
    Registriert seit
    Apr 2005
    Ort
    Rostock
    Beiträge
    2.016
    Die Anführungszeichen hindern zwar die lokale Bash den sed-Ausdruck zu interpretieren, aber auf dem Server kommen die nicht an. Also musst du doppelte Anführungszeichen verwenden: '"string"' oder "\"string\""
    Arch Linux / Intel Z77 / i5-3570K / 8GB PC3-1333 / SAMSUNG SSD 830 128GB

Ähnliche Themen

  1. Variablen in sed "einbauen"
    Von b.william im Forum Linux Allgemein
    Antworten: 2
    Letzter Beitrag: 05.06.07, 10:54
  2. apt-get Problem -> zerschossen?
    Von Tiroler im Forum System installieren und konfigurieren
    Antworten: 9
    Letzter Beitrag: 27.09.05, 19:49
  3. APT Metazeichen???
    Von tracer87 im Forum System installieren und konfigurieren
    Antworten: 16
    Letzter Beitrag: 19.01.05, 00:33
  4. [HTML-EDITOR] Regulären Ausdruck \n ersetzen
    Von Besso im Forum Anwendungen Allgemein, Software
    Antworten: 15
    Letzter Beitrag: 30.12.03, 17:06
  5. drucker konfiguration - ausdruck verschoben -bilder langsam
    Von stefan-tiger im Forum System installieren und konfigurieren
    Antworten: 4
    Letzter Beitrag: 30.03.03, 17:33

Lesezeichen

Berechtigungen

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