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」の両方が含まれていない場合、最後の一致しない行は「@」行に置き換えられます。

^@通常、(キャレットを参照)として表示されるnullバイトと混同しないでください。また、この動作は普遍的ではありません(では実装されていないようですnvi)。

答え2

これは私にとって効果的です。ファイルに do null 値が必要な場合があります。

確認する:

vim -b file

Unixに変換

dos2unix file

答え3

私はこれがヌルバイトだと思います。 cat -A file次のように表示されます。^@

tr以下を処理できます。

tr -d '\0' < file > file.new

関連情報