Ich möchte alle leeren Zeilen aus einer Datei entfernen. Auch wenn die Zeile Leerzeichen oder Tabulatoren enthält, sollte sie ebenfalls entfernt werden.
quelle
Ich möchte alle leeren Zeilen aus einer Datei entfernen. Auch wenn die Zeile Leerzeichen oder Tabulatoren enthält, sollte sie ebenfalls entfernt werden.
Nur grep
für Nicht-Leerzeichen:
grep '[^[:blank:]]' < file.in > file.out
[:blank:]
Innerhalb von Zeichenbereichen ( [...]
) wird dies als POSIX-Zeichenklasse bezeichnet. Es gibt ein paar wie [:alpha:]
, [:digit:]
... [:blank:]
übereinstimmt horizontalen weißen Raum (in der POSIX locale, das sind Raum und Reiter, sondern auch in anderen Gegenden könnten es mehr sein, wie alle Unicode horizontalen Abstand Zeichen in UTF - 8 Positionen ) , während [[:space:]]
Streichhölzer horizontal und vertikal wissen Leerzeichen (wie [:blank:]
Pluszeichen wie vertikaler Tabulator, Formularvorschub ...).
grep '[:blank:]'
Würden die Zeilen zurück , die alle Zeichen enthalten, :
, b
, l
, a
, n
oder k
. Zeichenklassen werden nur innerhalb [...]
und ^
innerhalb [...]
des Satzes erkannt . Bedeutet [^[:blank:]]
also jedes Zeichen außer den leeren.
$
for end of line geben?[^[:blank:]]$
würde nur mit Zeilen übereinstimmen, die mit einem Nicht-Leerzeichen enden. Wir wollen Zeilen, die überallgrep -E '\S'
das nicht funktioniert?Hier ist eine
awk
Lösung:Mit
awk
,NF
nur in nicht leeren Zeilen setzen. Wenn diese Bedingung zutrifft, wird durch dieawk
Standardaktionprint
die gesamte Zeile gedruckt.quelle
Wie wäre es mit:
oder
dh
Ersetzen Sie für jede Zeile:
^
")[[:blank:]]
") null oder mehrmals ("*
")$
")Weitere Informationen zu :: blank :: und anderen Sonderzeichen finden Sie unter http://www.zytrax.com/tech/web/regex.htm#special
quelle
[[:space:]]
enthält Registerkarten. Wenn dies nicht der Fall wäre, würde Ihre Regex fehlschlagen, wenn einem Tabulator ein Leerzeichen folgt.wctype(3)
undisalpha(3)
beschreiben, welche Zeichenklassen übereinstimmen.Sie können den
sed
Befehl zum Entfernen von Leerzeilen verwenden:Dieser Befehl löscht alle Leerzeilen aus der Datei "in"
quelle
Sieht so aus, als hätte ich einen gefunden, der nicht so schnell, aber lustig ist:
| xargs -L1
quelle
Versuchen ex -Wege:
Für mehrere Dateien (direkt bearbeiten):
Hinweis: Der
:bufdo
Befehl ist nicht POSIX .Ohne die Datei zu ändern (einfach auf der Standardausgabe drucken):
quelle
Verwenden Sie den folgenden Befehl:
Dadurch werden alle Zeilen einschließlich Leerzeichen oder Tabulatoren entfernt.
Andernfalls verwenden Sie zum Entfernen von Zeilen ohne Leerzeichen / Tabulatoren Folgendes:
Beispielsweise:
Siehe auch:
sed
: Leerzeilen mit sed löschenawk
: Leerzeilen mit awk entfernenquelle