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