[gelöst] debian bash script such String in Datei und lösche Zeile inklusive alles danach

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
joe2017
Beiträge: 1223
Registriert: 07.08.2017 14:29:51

[gelöst] debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von joe2017 » 25.06.2024 14:25:44

Hallo zusammen,

ich bin mal wider auf der Suche nach einem sed/awk Befehl.
Ich möchte einen String in einer Datei suchen und diese Zeile inklusive allen folgenden löschen.
Wie mach ich das am einfachsten?

Würde mich über einen Tip freuen.
Zuletzt geändert von joe2017 am 26.06.2024 09:15:20, insgesamt 2-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1223
Registriert: 07.08.2017 14:29:51

Re: debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von joe2017 » 25.06.2024 15:14:55

Was auch möglich wäre, wenn ich einen ganzen Block suchen und ersetzen könnte. In dem Block sind jedoch tabs und Zeielnumbrüche.

tobo
Beiträge: 2118
Registriert: 10.12.2008 10:51:41

Re: debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von tobo » 25.06.2024 15:56:47

joe2017 hat geschrieben: ↑ zum Beitrag ↑
25.06.2024 14:25:44
Ich möchte einen String in einer Datei suchen und diese Zeile inklusive allen folgenden löschen.

Code: Alles auswählen

sed '/PATTERN/,$d'
Löscht von der PATTERN-Zeile bis zum Dateiende. Siehe `info sed'.

Benutzeravatar
heisenberg
Beiträge: 3745
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von heisenberg » 25.06.2024 16:01:23

joe2017 hat geschrieben: ↑ zum Beitrag ↑
25.06.2024 15:14:55
Was auch möglich wäre, wenn ich einen ganzen Block suchen und ersetzen könnte. In dem Block sind jedoch Tabs und Zeilenumbrüche.
zeilenüberspannenden Block ersetzen mit awk:

Code: Alles auswählen

cat datei | awk '
/anfangsmarker/ {keine_ausgabe=1}
/endemarker/    {keine_ausgabe=0; print "neuer Text";next}
keine_ausgabe   {next}
{print}
' >datei.neu
cat datei.neu >datei
rm datei.neu
Die Zeilen mit anfangsmarker und endemarker werden nicht ausgegeben.

Benutzeravatar
joe2017
Beiträge: 1223
Registriert: 07.08.2017 14:29:51

Re: debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von joe2017 » 26.06.2024 07:02:41

Ich habe folgendes ohne Erfolg getestet. Was mache ich falsch?

Code: Alles auswählen

sed -i '/"meine suche nach"/,$d' /path/to/file

tobo
Beiträge: 2118
Registriert: 10.12.2008 10:51:41

Re: debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von tobo » 26.06.2024 08:56:59

joe2017 hat geschrieben: ↑ zum Beitrag ↑
26.06.2024 07:02:41
Was mache ich falsch?
Zunächst mal deine Erwartung, dass Leute hellsehen können, da die Aussage ja nur bei (mindestens) gezeigter Eingabe Sinn macht. Fehlerquelle wird also wohl sein, dass "meine suche nach" so nicht literal in der Datei steht, also z.B. inklusive der beiden ".
Bei deiner zweiten Frage ist es die Annahme, dass jeder weiß, was du unter einem Block verstehst und durch welche Besonderheiten er abgegrenzt ist.

Benutzeravatar
joe2017
Beiträge: 1223
Registriert: 07.08.2017 14:29:51

Re: debian bash script such String in Datei und lösche Zeile inklusive alles danach

Beitrag von joe2017 » 26.06.2024 09:14:53

Ich habe den Fehler gefunden. Das Problem waren anscheinend die Anführungszeichen.
FOlgendes hat funktioniert.

Code: Alles auswählen

sed -i '/meine suche nach/,$d' /path/to/file

Antworten