
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
@
@
@
...
これが標準言う:
ビジュアル モードでは、編集バッファの行 (現在の行以外) が、表示可能なディスプレイの下部の行に完全に収まらない場合、エディタは行のどの部分も表示しないことを選択できます。この理由により編集バッファからのテキストを含まないディスプレイの行は、それぞれ 1 つの '@' 文字で構成されます。
vim
オプションに関する のドキュメントも参照してくださいdisplay
。
「lastline」も「truncate」も含まれていない場合、収まらない最後の行は「@」行に置き換えられます。
これらを、通常は として表示される null バイトと混同しないでください^@
(キャレットに注意してください)。また、この動作は普遍的ではありません ( では実装されていないようですnvi
)。
答え2
私にとってはうまく動作します。おそらく、ファイルには dos null 値が含まれているはずです...
表示するには:
vim -b file
UNIXに変換するには
dos2unix file
答え3
これらはヌルバイトだと思います。 cat -A file
次のように表示されます。^@
tr
これらを処理できます:
tr -d '\0' < file > file.new