Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
xcomm
Beiträge: 793
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von xcomm » 27.04.2022 20:29:48

Hi Gemeinde,

habe hier eine Datei aus der ich die Zeile mit "DEACTIVATED" und die Folgezeile löschen möchte.

Wie mache ich das am Besten?

Ich dachte erst einfach mit

Code: Alles auswählen

egrep -v "DEACTIVATED" datei >> datei2
aber leider geht das scheinbar nicht mit -A 1 bei -v um die Folgezeile mitzunehmen.

Code: Alles auswählen

sed -e '/.*DEACT.*/d' datei 
geht auch, nur wie würde ich hier die Folgezeile mit erwischen?

Danke, xcomm
Zuletzt geändert von xcomm am 27.04.2022 22:11:28, insgesamt 1-mal geändert.

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

Re: Zeile mit wort und Folgezeile löschen mit grep oder sed oder vi?

Beitrag von tobo » 27.04.2022 20:40:27

xcomm hat geschrieben: ↑ zum Beitrag ↑
27.04.2022 20:29:48

Code: Alles auswählen

sed -e '/.*DEACT.*/d' datei 
geht auch, nur wie würde ich hier die Folgezeile mit erwischen?

Code: Alles auswählen

sed '/DEACTIVATED/{N;d}' datei
Dann -i zum Schreiben in die Datei.

PS: egrep ist veraltet (markiert als deprecated), besser grep -E verwenden.

Benutzeravatar
Livingston
Beiträge: 1427
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Zeile mit wort und Folgezeile löschen mit grep oder sed oder vi?

Beitrag von Livingston » 27.04.2022 20:48:43

Code: Alles auswählen

sed -e '/.*DEACT.*/ {N;d}' dateiname
N lädt die nachfolgende Zeile zusätzlich in den Eingabepuffer
d löscht den ganzen Krempel

EDIT: Da war wohl jemand schneller :mrgreen:
Der Hauptunterschied zwischen etwas, was möglicherweise kaputtgehen könnte und etwas, was unmöglich kaputtgehen kann, besteht darin, dass sich bei allem, was unmöglich kaputtgehen kann, falls es doch kaputtgeht, normalerweise herausstellt, dass es unmöglich zerlegt oder repariert werden kann.
Douglas Adams

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeile mit wort und Folgezeile löschen mit grep oder sed oder vi?

Beitrag von Meillo » 27.04.2022 20:52:52

Herrlich! Ein Einsatz fuer den guten alten ed. :THX:

Code: Alles auswählen

ed - datei <<!
/DEACTIVATED/;+d
w
q
!
Use ed once in a while!

Benutzeravatar
xcomm
Beiträge: 793
Registriert: 21.09.2003 05:12:01
Wohnort: Europe
Kontaktdaten:

Re: Zeile mit wort und Folgezeile löschen mit grep oder sed oder vi?

Beitrag von xcomm » 27.04.2022 22:10:27

Genial, danke Euch!

rodney
Beiträge: 334
Registriert: 09.12.2016 04:15:59

Re: Zeile mit wort und Folgezeile löschen mit grep oder sed oder vi?

Beitrag von rodney » 27.04.2022 22:13:16

Ich weiss nicht ob vi das kann, aber Debianvim kann es (auch wenn ich in diesem Fall sed bevorzugen wuerde):

Code: Alles auswählen

:g/DEACTIVATED/normal 2dd

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

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von tobo » 27.04.2022 22:17:54

: leitet ja den ex-Mode ein, was ein Bestandteil von vi und vim ist.

Code: Alles auswählen

ex <<< $'g/DEACTIVATED/;+d\nwq' datei

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von Meillo » 28.04.2022 07:53:37

Da ist eine Sache, die ich kulturell immer wieder faszinierend finde:

Urspruenglich gab es ed (= Editor). Dieser konnte wunderbar Dateien editieren und zwar sowohl interaktiv als auch in Scripten. Nur eines konnte man mit ed schlecht: ihn in Pipelines einbauen. Fuer diesen Anwendungszweck ist sed (= Stream Editor) entstanden.

Ein paar Jahrzehnte spaeter ist sed ein Erfolgsprogramm aber ed kennt niemand mehr. Das fuehrt zu der Stilbluete, dass die Leute sed auch dann verwenden wollen wenn die Aufgabe fuer sed gar nicht so gut geeignet ist (weil sed Zeilen nicht relativ adressieren kann), und nur wenige ueberhaupt an ed denken, der fuer die Aufgabe perfekt geeignet ist.

Das verdeutlicht einem, wie sehr Zeileneditoren (wie ed und ex) aus dem Bewusstsein und den Kenntnissen der User verschwunden sind.

Ed wird auf einem heutigen Debian standardmaessig noch nicht mal mehr installiert! 8O Da aber zum Glueck immer noch ein vi vorhanden ist, ist auch ex vorhanden ... welcher ed sehr aehnlich ist ... und insofern bekannt ist, dass jedes Kommando, das man im vi mit Doppelpunkt eingibt, von ex verarbeitet wird (da vi und ex ein Doppeleditor sind), ist die Bedienung von ex gar nicht so schwer. Der vi selbst kann gar kein Suchen-Ersetzen; das kann nur ex. Auch nutzen wir alle mit :wq das Speichern und Schliessen von ex. Das Speichern und Schliessen von vi, das ZZ ist, scheint niemand zu nutzen. Jedenfalls habe ich noch nie jemanden getroffen, der das verwendet haette.

... spannende kulturelle Phaenomene.

Gebt im vi beim naechsten Mal doch mal Q ein ... und schwupps seid ihr in den ex gewechselt -- gleiche Datei, gleicher Editierzustand, bloss im anderen Editierinterface. (Die ex-Befehle muesst ihr dort dann ohne den fuehrenden Doppelpunkt eingeben.) Zurueck kommt ihr mit dem ex-Befehl vi ... und schwupps seid ihr wieder im vi. -- Kaum zu glauben aber wahr. ;-) Probiert's mal aus!
Use ed once in a while!

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

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von tobo » 28.04.2022 09:21:03

Meillo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 07:53:37
(Die ex-Befehle muesst ihr dort dann ohne den fuehrenden Doppelpunkt eingeben.)
koennt

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von Meillo » 28.04.2022 09:29:46

tobo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 09:21:03
Meillo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 07:53:37
(Die ex-Befehle muesst ihr dort dann ohne den fuehrenden Doppelpunkt eingeben.)
koennt
Stimmt:
Manpage ex(1) hat geschrieben: For sanity with use from within visual mode, ex ignores a “:” preceding any command.
Das war mir bisher noch nicht bewusst.
Use ed once in a while!

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von JTH » 28.04.2022 10:35:34

Danke für den Exkurs, Meillo 👍 Immer interessant, etwas über die Geschichte und Zusammenhänge der verschiedenen Werkzeuge zu lesen. Steh nach dem Regex-Kurs (Edit: und dem Kurs zu den coreutils) die DFDE-Geschichtsstunde auf dem Stundenplan? 😉

Meillo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 07:53:37
Das Speichern und Schliessen von vi, das ZZ ist, scheint niemand zu nutzen. Jedenfalls habe ich noch nie jemanden getroffen, der das verwendet haette.
Doch doch, du hast einen gefunden 🙂 Benutze ZZ und ZQ, bunt gemischt mit :q[a][!] und :x[a]. :wq benutze ich gar nicht mehr, :x ist doch soo viel praktisch kürzer.

Der Beitrag verträgt sich nicht so ganz mit den Smileys des Forums …
Manchmal bekannt als Just (another) Terminal Hacker.

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von Meillo » 28.04.2022 11:33:40

JTH hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 10:35:34
Meillo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 07:53:37
Das Speichern und Schliessen von vi, das ZZ ist, scheint niemand zu nutzen. Jedenfalls habe ich noch nie jemanden getroffen, der das verwendet haette.
Doch doch, du hast einen gefunden 🙂 Benutze ZZ und ZQ
Was es nicht alles gibt! 8O :lol:



Edit: Lustig, im Zitat funktioniert der Smilie, aber im normalen Text nicht. Hae?
Use ed once in a while!

Benutzeravatar
MSfree
Beiträge: 10744
Registriert: 25.09.2007 19:59:30

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von MSfree » 28.04.2022 13:22:05

Meillo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 11:33:40
Edit: Lustig, im Zitat funktioniert der Smilie, aber im normalen Text nicht. Hae?
Persönlicher Bereich -> Einstellungen -> Beitragsoptionen ändern -> Smilies standardmäßig aktivieren

auf "nein" gesetzt?

Benutzeravatar
Meillo
Moderator
Beiträge: 8813
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: Zeile mit Wort und Folgezeile löschen mit grep oder sed oder vi? [gelöst]

Beitrag von Meillo » 28.04.2022 13:32:37

MSfree hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 13:22:05
Meillo hat geschrieben: ↑ zum Beitrag ↑
28.04.2022 11:33:40
Edit: Lustig, im Zitat funktioniert der Smilie, aber im normalen Text nicht. Hae?
Persönlicher Bereich -> Einstellungen -> Beitragsoptionen ändern -> Smilies standardmäßig aktivieren

auf "nein" gesetzt?
Nein, das ist nicht das Problem. Bei mir sieht's so aus:

Bild

Unten ist der Emoji da; oben nicht.
Use ed once in a while!

Antworten