Shell-Script

如何從vi中顯示為@的文件中刪除空行/空白行

  • January 24, 2019

當我通過 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

仍然文件帶有空行

如何刪除空/空行?

這些不是空行,而是太長而無法在螢幕上顯示的行,即使在換行之後也是如此。

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

foo
@
@
@
...

這就是標準所說的:

在可視模式下,如果編輯緩衝區中的一行(目前行除外)不完全適合顯示底部可用於其呈現的行,則編輯器可以選擇不顯示該行的任何部分. 由於這個原因,不包含來自編輯緩衝區的文本的顯示行應由單個“@”字元組成。

另請查看有關該選項vim的文件:display

當“lastline”和“truncate”都不包含時,最後一行不適合的行將替換為“@”行。

不要將它們與空字節混淆,空字節通常顯示為^@(注意插入符號)。此外,這種行為並不普遍(它似乎沒有在 中實現nvi)。

引用自:https://unix.stackexchange.com/questions/496475