Ich versuche, leere Zeilen mit sed zu löschen:
sed '/^$/d'
aber bisher hatte ich kein Glück damit.
Zum Beispiel habe ich diese Zeilen:
xxxxxx
yyyyyy
zzzzzz
und ich möchte es so haben:
xxxxxx
yyyyyy
zzzzzz
Was sollte der Code dafür sein?
Ich versuche, leere Zeilen mit sed zu löschen:
sed '/^$/d'
aber bisher hatte ich kein Glück damit.
Zum Beispiel habe ich diese Zeilen:
xxxxxx
yyyyyy
zzzzzz
und ich möchte es so haben:
xxxxxx
yyyyyy
zzzzzz
Was sollte der Code dafür sein?
Meine spezifische Antwort in bash
ist, die Verwendung des perl
Substitutionsoperators mit dem globalen Muster g
Flag dafür zu empfehlen, wie folgt:
$ perl -pe s'/^\n|^[\ ]*\n//g' $file
xxxxxx
yyyyyy
zzzzzz
Diese Antwort zeigt, wie man berücksichtigt, ob die leeren Zeilen Leerzeichen enthalten ([\ ]*
), sowie die Verwendung von |
zur Trennung mehrerer Suchbegriffe/Felder. Getestet auf macOS High Sierra und CentOS 6/7.
Zur Information, der ursprüngliche Code des Fragestellers sed '/^$/d' $file
funktioniert einwandfrei im bash
Terminal auf macOS High Sierra und CentOS 6/7 Linux in einem hochleistungsfähigen Supercomputing-Cluster.
Wenn Sie moderne Rust-Tools verwenden möchten, können Sie Folgendes in Betracht ziehen:
cat datafile | rg '.'
Zeile mit Leerzeichen wird als nicht leer angesehencat datafile | rg '\S'
Zeile mit Leerzeichen wird als leer angesehenrg '\S' datafile
Zeile mit Leerzeichen wird als leer angesehen (-N
kann hinzugefügt werden, um Zeilennummern für die Anzeige auf dem Bildschirm zu entfernen)cat datafile | sd '^\n' ''
Zeile mit Leerzeichen wird als nicht leer angesehencat datafile | sd '^\s*\n' ''
Zeile mit Leerzeichen wird als leer angesehensd '^\s*\n' '' datafile
inline bearbeiten CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.