cómo eliminar las líneas vacías/en blanco de los archivos que aparecen como @ de vi

cómo eliminar las líneas vacías/en blanco de los archivos que aparecen como @ de vi

cuando abro el archivo por vi

como

vi file

Current partition replica assignment
@
@
@
@
@
{"version":1,"partitions":[{"topic")]
@
@
@
@
@
Proposed partition reassignment configuration

pero trato de borrar esta línea vacía

como

sed -i 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file

o

sed -i '/^$/d'  file

o

sed -i '/^$/d' file

El archivo todavía tiene líneas vacías.

¿Cómo eliminar las líneas vacías/en blanco?

Respuesta1

Esos sonnolíneas vacías, pero líneas que son demasiado largas para caber en la pantalla, incluso después de ajustarlas.

$ perl -e 'print "foo\n", "bar " x 4096' >/tmp/file
$ vim /tmp/file

foo
@
@
@
...

Esto es lo que elestándardice:

En modo visual, si una línea del búfer de edición (que no sea la línea actual) no encaja completamente en las líneas en la parte inferior de la pantalla que están disponibles para su presentación, el editor puede optar por no mostrar ninguna parte de la línea. . Las líneas de la pantalla que no contienen texto del búfer de edición por este motivo consistirán cada una en un único carácter '@'.

Consulte también la vimdocumentación de 's sobre la displayopción:

Cuando no se incluyen "última línea" ni "truncar", la última línea que no encaja se reemplaza con líneas "@".

No los confunda con bytes nulos, que normalmente se muestran como ^@(observe el signo de intercalación). Además, este comportamiento no es universal (no parece estar implementado en nvi).

Respuesta2

A mí me funciona bien. Probablemente su archivo debería tener dos valores nulos...

Para ver:

vim -b file

Para convertir a Unix

dos2unix file

Respuesta3

Creo que son bytes nulos. cat -A filelos mostraría como^@

trpuede manejar aquellos:

tr -d '\0' < file > file.new

información relacionada