
wenn ich die Datei mit vi öffne
als
vi file
Current partition replica assignment
@
@
@
@
@
{"version":1,"partitions":[{"topic")]
@
@
@
@
@
Proposed partition reassignment configuration
aber ich versuche diese leere Zeile zu löschen
als
sed -i 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file
oder
sed -i '/^$/d' file
oder
sed -i '/^$/d' file
noch immer ist die Datei mit den leeren Zeilen
Wie entferne ich die leeren/leeren Zeilen?
Antwort1
Jene sindnichtleere Zeilen, aber Zeilen, die zu lang sind, um auf den Bildschirm zu passen, selbst nach dem Umbrechen.
$ perl -e 'print "foo\n", "bar " x 4096' >/tmp/file
$ vim /tmp/file
foo
@
@
@
...
Das ist, was dieStandardsagt:
Wenn im visuellen Modus eine Zeile aus dem Editierpuffer (mit Ausnahme der aktuellen Zeile) nicht vollständig in die Zeilen am unteren Rand der Anzeige passt, die für ihre Darstellung zur Verfügung stehen, kann der Editor entscheiden, einen Teil der Zeile nicht anzuzeigen. Die Zeilen der Anzeige, die aus diesem Grund keinen Text aus dem Editierpuffer enthalten, müssen jeweils aus einem einzelnen „@“-Zeichen bestehen.
Sehen Sie sich auch die vim
Dokumentation zu dieser display
Option an:
Wenn weder „lastline“ noch „truncate“ enthalten ist, wird die letzte Zeile, die nicht passt, durch „@“-Zeilen ersetzt.
Verwechseln Sie sie nicht mit Nullbytes, die normalerweise als angezeigt werden ^@
(beachten Sie das Zirkumflex). Außerdem ist dieses Verhalten nicht universell (es scheint in nicht implementiert zu sein nvi
).
Antwort2
Bei mir funktioniert es gut. Wahrscheinlich sollte Ihre Datei DOS-Nullwerte enthalten ...
Sehen:
vim -b file
So konvertieren Sie nach Unix
dos2unix file
Antwort3
Das sind Nullbytes, glaube ich. cat -A file
würde sie anzeigen als^@
tr
kann damit umgehen:
tr -d '\0' < file > file.new