如何從 vi 顯示為 @ 的檔案中刪除空白行

如何從 vi 顯示為 @ 的檔案中刪除空白行

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

相關內容