Zeilen ersetzen

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von BrynFury, 29.01.2008.

  1. #1 BrynFury, 29.01.2008
    BrynFury

    BrynFury Grünschnabel

    Dabei seit:
    24.01.2008
    Beiträge:
    8
    Zustimmungen:
    0
    hi...

    wie kann ich zum beispiel die vorletzte zeile in einer datei durch einen string ersetzen !?

    ty
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Bâshgob, 29.01.2008
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
    Mit einem Editor. Zu mehr Antwort taugt deine Frage imho nicht.
     
  4. #3 tiefengrund, 30.01.2008
    tiefengrund

    tiefengrund an de wand schmiern

    Dabei seit:
    11.01.2006
    Beiträge:
    153
    Zustimmungen:
    0
    Ort:
    Wolkenstein / Erzgebirge
    ich glaub er will mit einer Variable arbeiten
     
  5. #4 Bâshgob, 30.01.2008
    Bâshgob

    Bâshgob freies Radikal

    Dabei seit:
    29.07.2004
    Beiträge:
    2.334
    Zustimmungen:
    0
    Ort:
    Hannover
    Warum schreibt er das dann nicht? Oder bin ich hier auf www.hellseher.de?
     
  6. #5 tiefengrund, 30.01.2008
    tiefengrund

    tiefengrund an de wand schmiern

    Dabei seit:
    11.01.2006
    Beiträge:
    153
    Zustimmungen:
    0
    Ort:
    Wolkenstein / Erzgebirge
    Weil wir das ja riechen können :-)
    Wir müssen das ahnen, aus seinen Worten deuten.
    ich hab hier Tierknochen und Ornamente, die mir sein Problem mitteilen :-D
     
  7. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  8. #6 BrynFury, 30.01.2008
    Zuletzt bearbeitet: 30.01.2008
    BrynFury

    BrynFury Grünschnabel

    Dabei seit:
    24.01.2008
    Beiträge:
    8
    Zustimmungen:
    0
    naja, ich meinte natürlich mit grep und/oder awk arbeiten...
    nur weiß ich nicht, wie ich damit mein problem lösen könnte.
    ok die zeile könnte ich mit grep ausfindig machen
    Code:
    grep "Zeileninhalt" /datei.txt
    
    wie kann ich dann aber diese komplette zeile ersetzen?!
    .
    .
    .
    EDIT (autom. Beitragszusammenführung) :
    .

    so habe jetzt folgendes:

    Code:
    zeitzone="\"Europe/Brussels\""
                            zoneAlt=$(grep ^"TIMEZONE=" clock > test.txt)
                            sedstr="s/$zoneAlt/$zeitzone/g"
                            sed -e '$sedstr' clock > test.txt;; 
    
    gibt aber den fehler : sed: -e Ausdruck #1, Zeichen 7: unterminated `s' command
     
  9. #7 Wolfgang, 30.01.2008
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    Was willst du denn nun machen?

    Hier die vorletzte:

    Hier eine Zeile, die auf ein bestimmtes Pattern matcht. :think:
    Das geht nun gleich garnicht so.

    ok der Reihe nach:
    Du kannst mit grep nix ändern.
    grep ist ehemal aus ed entstanden, wobei es aus der Zeichenfolge für Ausgabe von Zeilen die auf eine Regexp matchen benannt wurde: ;)
    Was der Befehl für ed ist, Datei durchsuchen (g) und regexp /re/ Matching print (p).
    Ersetzen kann grep also nicht.
    Dafür gibt es z.B. sed
    Wir ersetzen die vorletzte Zeile durch Neuer Text
    Code:
    sed -ne ':l N;$!b l;$s/^\(.*\)\n[^\n]*[\n]\([^\n]*\)$/\1\nNeuer Text\n\2/g;p' input_file
    
    Natürlich solltest du erst prüfen, ob es eine Vorletzte Zeile gibt:
    Sonst ist nix zu tun.
    Code:
    if [ $(wc -l test|cut -d" " -f1) -gt 1 ] ;
    then
    sed -ne ':l N;$!b l;$s/^\(.*\)\n[^\n]*[\n]\([^\n]*\)$/\1\nNeuer Text\n\2/g;p' input_file > Outputfile
    else
    echo "zu wenig Zeilen"
    fi
    
    Wenn du einen festen String suchst, und durch einen festen String ersetzen willst, kann das sed auch allein. Wobei es hier egal ist, wo der Suchstring steht.
    Code:
    sed -e '/TIMEZONE=/s/^.*$/Mein neuer String/' input >output
    
    Das Konstrukt funktioniert nicht:
    Code:
    sed -e '$sedstr' clock > test.txt;
    
    sed interpretiert wegen der einfachen ' deine variable nicht.
    So wird daraus für sed:
    Am Ende der Datei ($)
    ersetze (s)
    edstr ...
    nun fehlt durch was .
    Deshalb die Fehlermeldung.


    Gruß Wolfgang
     
Thema:

Zeilen ersetzen

Die Seite wird geladen...

Zeilen ersetzen - Ähnliche Themen

  1. Zeilenweise suchen, löschen und ersetzen / Inhalt einfügen

    Zeilenweise suchen, löschen und ersetzen / Inhalt einfügen: Hallo liebe Community. Habe ein kleines Problem und bin leider nicht so der Linux-Freak... Ich hoffe mal ihr könnt mir da vielleicht ein wenig...
  2. Zeilen löschen und ersetzen mit sed

    Zeilen löschen und ersetzen mit sed: ... sollte eigentlich ganz einfach sein. Dachte ich. Jetzt probiere ich schon seit mehr als einer Stunde an einem ganz simplen Problem herum:...
  3. sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen

    sed/tr: Zeilenumbruch mit führendem Bindestrich ersetzen: Hi, ich hab mir schon einen Wolf abgesucht im Netz, ich kriegs nicht hin: Eine Text-Datei enthält z.B. folgende 2 Zeilen: ---------- Die...
  4. Suchen nach String und Ersetzen zeilenweise

    Suchen nach String und Ersetzen zeilenweise: Hallo, ich habe folgendes Problem: ich möchte in einer großen Textdatei die zeilenweise folgendermaßen aufgebaut ist nach einem String...
  5. mehrere Zeilen ersetzen?

    mehrere Zeilen ersetzen?: Hallo, ich bin neu hier und habe mit Unix noch nicht allzuviel Erfahrung, bin aber bestrebt mehr zu lernen. Kann ich mit sed auch mehrere...