Zeilen bis zum Wort XXXX löschen [Bash]

Dieses Thema im Forum "Shell-Skripte" wurde erstellt von Samara-X, 21.07.2008.

  1. #1 Samara-X, 21.07.2008
    Samara-X

    Samara-X Mitglied

    Dabei seit:
    04.04.2007
    Beiträge:
    36
    Zustimmungen:
    0
    Hallo,

    Gibt es eine Möglichkeit alle Zeilen in einer Textdatei
    bis zu einem bestimmten Wort oder einer bestimmten
    Zeilen Nummer zu löschen?

    Ich dachte erst an grep aber damit kann man nur
    die Zeile ausfindig machen, ich will die Zeilen aber
    bis zum Wort löschen..

    z.B.

    cat textdatei.txt

    hallo
    test
    foo
    conny
    arsc

    dann soll z.B. alles bis Zeile foo gelöscht werden, so das nur noch
    conny und arsc über bleiben.

    Danke für eure Antworten!
     
  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 Aqualung, 21.07.2008
    Aqualung

    Aqualung Routinier

    Dabei seit:
    12.02.2008
    Beiträge:
    404
    Zustimmungen:
    0
    Code:
    sed -e 1,/foo/d  textdatei.txt
     
  4. #3 Samara-X, 21.07.2008
    Samara-X

    Samara-X Mitglied

    Dabei seit:
    04.04.2007
    Beiträge:
    36
    Zustimmungen:
    0
    cool genau so wollte ich es, danke!

    ❤ Bash ❤
     
  5. #4 freecell, 22.07.2008
    freecell

    freecell Grünschnabel

    Dabei seit:
    22.07.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Ort:
    Limburg
    Hallo,

    ich bin ebenfalls neu hier und wollte an die Frage noch anknüpfen. Ich nutze Debian 4.0.

    Ich möchte bestimmte Zeilen in einer Datei entgültig löschen. Mit

    Code:
    sed -e 1d  textdatei.txt
    oder

    Code:
    sed -e '1d'  textdatei.txt
    sollte die 1 Zeile der Testdatei gelöscht werden.

    Wenn ich danach jedoch mit

    Code:
    cat textdatei.txt
    den Inhalt wieder aufrufe, wird mir wieder alles angezeigt.

    Wird "sed" nur benutzt um Zeilen bei der Bildschirmausgabe zu löschen?
    Und wie kann ich diese Zeile entgültig aus der Datei löschen?
    Wenn möglich ohne perl und C/C++.

    Die einzige Variante die ich bisher habe, ist die Ausgabe in eine 2. Datei umzuleiten mit:

    Code:
    sed -e '1d'  textdatei.txt > textdatei2.txt
    Da ich diesen Befehl jedoch in einer Schleife mehrfach ausführen möchte, müßte ich dann jedesmal diese textdatei2.txt erstellen, die alte Datei löschen und die neue Datei umbenennen von textdatei2 nach textdatei1

    Habt ihr hierzu eine Lösung?

    Danke und Gruß, freecell.
     
  6. dizzgo

    dizzgo Lernbereite Riesenratte

    Dabei seit:
    04.08.2005
    Beiträge:
    573
    Zustimmungen:
    0
    Ort:
    /ch/sg///
    Sed mach Änderungunen grundsätzlich im eigenen Buffer und gibt diese dann nach stdout.
    Sofern du gnu sed verwedest gibt es die Option '-i' die macht die änderungen inline also:
    Code:
    sed -i '1d' datei.txt
    
    ansonsten ist der Weg mit der Ausgabeumleitung der richtige, du könntest in deinem Script ja z.B folgendes anhängen:
    Code:
    sed -e '1d'  textdatei.txt > textdatei2.txt ; mv textdatei2.txt textdatei.txt
    
    Gruss
    d22
     
  7. #6 Gott_in_schwarz, 22.07.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Das ist aber eigentlich the way to go.
    Code:
    sed -e '1d file > file.tmp && mv file.tmp file
    Unportabel (weil von sed-Version abhängig) ginge es eventuell mit dem "-i" switch (für inplace-Veränderung der Datei). (Mit gnu-sed sollte das zum Beispiel funktionieren.)
     
  8. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  9. #7 freecell, 22.07.2008
    freecell

    freecell Grünschnabel

    Dabei seit:
    22.07.2008
    Beiträge:
    2
    Zustimmungen:
    0
    Ort:
    Limburg
    Hallo,

    und danke euch beiden!

    Ich denke ich werde es so wie von "gott_in_schwarz" geschrieben machen.

    Grüße, freecell
     
  10. #8 Gott_in_schwarz, 22.07.2008
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Mach das lieber nicht, bei mir fehlt ein single-quote. :(
     
Thema: Zeilen bis zum Wort XXXX löschen [Bash]
Besucher kamen mit folgenden Suchen
  1. linux bash bis zu einem wort alles löschen

    ,
  2. mit sed wörter löschen

    ,
  3. cat grep Wort entfernen

Die Seite wird geladen...

Zeilen bis zum Wort XXXX löschen [Bash] - Ähnliche Themen

  1. 2 Zeilen aus einer txt auslesen

    2 Zeilen aus einer txt auslesen: Hallo Leute, ich habe eine Datei die immer aus zwei zusammenhängenden Zeilen besteht, als Beispiel: DE0006231004 # 15,04 Infineon DE0005785604...
  2. Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen

    Zeichen an Zeilenanfang für bestimmten Zeilenbereich einfügen: Hallo, ich würde gerne in einem Textdokument, z.B. von Zeile 10 - 18, an den Zeilenanfang ein # einfügen. Habe mir schon diverse Seiten zu SED...
  3. Textdatei zeilenweise in durchnummerierte Variablen schreiben

    Textdatei zeilenweise in durchnummerierte Variablen schreiben: Hi Leute, ich versuche folgendes Problem zu lösen. Ich möchte eine Textdatei einlesen und den Inhalt jeder Zeile in immer eine neue Variable...
  4. .cfg Datei Analysieren und Zeilen Stellenweise abändern

    .cfg Datei Analysieren und Zeilen Stellenweise abändern: Hallo allesamt :) ich hab ein kleines Problem. Ich will mittels eines Shell Skriptes in einer Datei die Namensgebung einiger Geräte ändern. Ich...
  5. Script um bestimme Zeilen einer Datei auszulesen

    Script um bestimme Zeilen einer Datei auszulesen: Hallo, ich habe u.g Textfile. Daraus möchte ich für jeden Block (Beginnend mit id) eine Zeile mit der id, dem namen und den 2-4 WWPN in eine...