当我用 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