[gelöst] Leerzeilen im vi löschen
[gelöst] Leerzeilen im vi löschen
Hallo,
wollte heute in einem Script, welches ich mit vi geöffnet hatte, alle Leerzeilen löschen.
Doch leider funktionierte dies nicht so, wie ich es mir so gedacht hatte.
:1,$ /^$/d --> leider nein!
wollte heute in einem Script, welches ich mit vi geöffnet hatte, alle Leerzeilen löschen.
Doch leider funktionierte dies nicht so, wie ich es mir so gedacht hatte.
:1,$ /^$/d --> leider nein!
Zuletzt geändert von Duff am 11.05.2009 19:23:15, insgesamt 1-mal geändert.
Oh, yeah!
Re: Leerzeilen im vi löschen
http://www.netzmafia.de/skripten/unix/unix6.html
Weitere Beispiele für globales Suchen und Ersetzen:
Das Leerzeichen wird in den Beispielen als "_" dargestellt. Das Prozentzeichen (%) ist eine Abkürzung für 1,$ - also für die Bearbeitung der ganzen Datei.
1. Ersetzen Punkt durch Semikolon in den ersten 10 Zeilen:
:1,10s/\./;/g
2. Alle Worte "Hilfe" oder "hilfe" durch "HILFE" ersetzen:
:%s/[Hh]ilfe/HILFE/g
3. aufeinanderfolgende Leerzeichen durch ein einziges ersetzen
:%s/_ _*/_/g
4. alle Leerzeilen löschen:
:g/^$/d
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: Leerzeilen im vi löschen
Danke, aber da muss einer drauf kommen, dass man dies nur mit :g/^$/d machen kann und nicht mit :%/^$/d.
So richtig verstanden wofür das g (global?) nun steht und wieso die anderen Varianten, wie beim Ersetzen, nicht funktionieren, habe ich noch nicht.
So richtig verstanden wofür das g (global?) nun steht und wieso die anderen Varianten, wie beim Ersetzen, nicht funktionieren, habe ich noch nicht.
Oh, yeah!
- KBDCALLS
- Moderator
- Beiträge: 22458
- Registriert: 24.12.2003 21:26:55
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dortmund
-
Kontaktdaten:
Re: [gelöst] Leerzeilen im vi löschen
Global bedeutet das alle Vorkommen eines Zeichnens oder Strings in einer Zeile gefunden werden und nicht nur das erste.
Am Deutlichten wirds beim Ersetzen. Aus der Zeile
wird
Alle a werden durch c erstetzt mit dieser Zeile
Am Deutlichten wirds beim Ersetzen. Aus der Zeile
Code: Alles auswählen
aaaaaaaaaa
Code: Alles auswählen
caaaaaaaaa
Code: Alles auswählen
1,$s:a:c
Code: Alles auswählen
1,$s:a:c:g
Was haben Windows und ein Uboot gemeinsam?
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
Kaum macht man ein Fenster auf, gehen die Probleme los.
EDV ist die Abkürzung für: Ende der Vernunft
Bevor du einen Beitrag postest:
- Kennst du unsere Verhaltensregeln
- Lange Codezeilen/Logs gehören nach NoPaste, in Deinen Beitrag dann der passende Link dazu.
Re: [gelöst] Leerzeilen im vi löschen
Danke, aber beim Substitude ist mir die Bedeutung des g bekannt. Hier nutzt man, um den Befehl auf alle Zeilen anzuwenden, auch wieder im vi :1,$ s/a/b/g oder % s/a/b/g und nicht g s/a/b/g.
Oh, yeah!
Re: Leerzeilen im vi löschen
Das ist ja doppelt gemoppelt. `%' steht (im Vim) ja schon für alle Zeilen. Dann bringst du noch eine RegExp ... klar dass der Vim dann nicht mehr weiß was er tun soll.Duff hat geschrieben::%/^$/d.
So richtig verstanden wofür das g (global?) nun steht und wieso die anderen Varianten, wie beim Ersetzen, nicht funktionieren, habe ich noch nicht.
Das `g' das du kennst ist ein Modifier für das `s'-Kommando und sorgt dafür, dass alle Vorkommen in der Zeile ersetzt werden.Duff hat geschrieben:Danke, aber beim Substitude ist mir die Bedeutung des g bekannt. Hier nutzt man, um den Befehl auf alle Zeilen anzuwenden, auch wieder im vi :1,$ s/a/b/g oder % s/a/b/g und nicht g s/a/b/g.
Dieses `g' hier ist ein Kommando. `:help :g' sagt dazu:
Code: Alles auswählen
:[range]g[lobal]/{pattern}/[cmd]
Execute the Ex command [cmd] (default ":p") on the
lines within [range] where {pattern} matches.
Use ed once in a while!
Re: [gelöst] Leerzeilen im vi löschen
Ok, danke Meillo. Wenn man weiß wonach man in der Hilfe suchen muss, ist es nun klar.
Oh, yeah!
Re: [gelöst] Leerzeilen im vi löschen
Code: Alles auswählen
:g/^$/d
Re: [gelöst] Leerzeilen im vi löschen
Stramme Leistung xcomm, der Beitrag ist 14 Jahre alt!
Erster Preis für Leichenfledderei im Debianforum...
Erster Preis für Leichenfledderei im Debianforum...
Re: [gelöst] Leerzeilen im vi löschen
Jemand sollte mal 'ne Preisverleihung à la Release-Wette oder geo-caching aufmachen: Finde den Ausgräber der ältesten Thread-Leiche! 

Re: [gelöst] Leerzeilen im vi löschen
Wie würdest du die Preisverleihung festlegen? Das älteste Datum bezogen auf den Threadersteller/Eingangspost oder bezogen auf die letzte Bearbeitung/letzter Post?fischig hat geschrieben:Jemand sollte mal 'ne Preisverleihung à la Release-Wette oder geo-caching aufmachen: Finde den Ausgräber der ältesten Thread-Leiche!
Bzgl. Threadersteller/Eingangspost müsste es nur jemand wagen auf diesen Thread zu antworten.
Bgzl. Zeitraum längste Nichtbearbeitung/letzter Post wäre es wahrschieinlich eher dieser Thread.
Wer traut sich? Beide Threads sind mehr als 21 Jahre unbearbeitet.

Re: [gelöst] Leerzeilen im vi löschen
So ein Quatsch. Ich hoffe, niemand braucht das fuer sein Ego. 

Use ed once in a while!
Re: [gelöst] Leerzeilen im vi löschen
Nein. Braucht man nicht. Für mein Ego brauche ich nur einen guten Score bei StreetComplete.Meillo hat geschrieben:So ein Quatsch. Ich hoffe, niemand braucht das fuer sein Ego.
Bin in Deutschland aber nur ungefähr auf Rang 300. Ich sollte mal wieder mappen gehen.