Zeilen bis zum Wort XXXX löschen [Bash]

S

Samara-X

Mitglied
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!
 
cool genau so wollte ich es, danke!

❤ Bash ❤
 
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.
 
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
 
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
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.)
 
Hallo,

und danke euch beiden!

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

Grüße, freecell
 
Mach das lieber nicht, bei mir fehlt ein single-quote. :(
 

Ähnliche Themen

Textdatei filtern und löschen mit grep /sed

Keine grafische Oberfläche (Debian Installation)

Rückgabe eines Befehls

Telefoninterview (Wie sich auf Bash-Shell-Fragen vorbereiten?)

[Gelöst] Suchen und ersetzen mit Hilfe mehrerer Parameter

Zurück
Oben