
когда я открываю файл с помощью vi
как
vi file
Current partition replica assignment
@
@
@
@
@
{"version":1,"partitions":[{"topic")]
@
@
@
@
@
Proposed partition reassignment configuration
но я пытаюсь удалить эту пустую строку
как
sed -i 's/^ *//; s/ *$//; /^$/d; /^\s*$/d' file
или
sed -i '/^$/d' file
или
sed -i '/^$/d' file
файл все еще с пустыми строками
как удалить пустые строки?
решение1
Этонетпустые строки, но строки, которые слишком длинные, чтобы поместиться на экране, даже после переноса.
$ perl -e 'print "foo\n", "bar " x 4096' >/tmp/file
$ vim /tmp/file
foo
@
@
@
...
Это то, чтостандартныйговорит:
В визуальном режиме, если строка из буфера редактирования (кроме текущей строки) не полностью помещается в строки в нижней части дисплея, доступные для ее представления, редактор может решить не отображать какую-либо часть строки. Строки дисплея, которые по этой причине не содержат текст из буфера редактирования, должны состоять из одного символа '@'.
Также ознакомьтесь с vim
документацией об этой display
опции:
Если не указаны ни «lastline», ни «truncate», последняя неуместная строка заменяется строками «@».
Не путайте их с нулевыми байтами, которые обычно отображаются как ^@
(обратите внимание на каретку). Кроме того, это поведение не является универсальным (кажется, оно не реализовано в nvi
).
решение2
У меня это работает хорошо. Вероятно, ваш файл должен иметь значения dos null...
Смотреть:
vim -b file
Для конвертации в Unix
dos2unix file
решение3
Я полагаю, что это нулевые байты. cat -A file
отобразит их как^@
tr
может справиться с этим:
tr -d '\0' < file > file.new