ファイルの最後の行を削除しても機能しませんか? [コピー]

ファイルの最後の行を削除しても機能しませんか? [コピー]

bashスクリプトで生成されたTXTファイルがありますが、最後にファイルの最後の空行を削除したいと思います。

head --lines=-1 r3.txt > r4.txt

sed '$d' r3.txt > r4.txt

cat r3.txt | head -n -1  > r4.txt

r4.txtにはまだ最後の空行があります...

私はLinux CentOS 6.xサーバーを使用しています。

これは行末(unix x windows)に関連していますか?

どんな手がかりがありますか?

ベストアンサー1

たぶん最後に空白行がないかもしれません。

Unixテキストファイルは行で構成され、各行は改行文字('\n'、、、^J0x0aで終わります。つまり、改行文字は行区切り文字ではなく行終端文字です。これは特に最後の行に対応するため、ファイル全体に対応します。

たとえば、テキストファイルには次のものが含まれます。

abc
def

次のコマンドで見ると、次のようになりますxxd

0000000: 6162 630a 6465 660a                      abc.def.

0a最後のシングルを鮮明に見ることができます。一方、最後に空白行が1つある場合は、次のような結果が出ます。

0000000: 6162 630a 6465 660a 0a                   abc.def..

今はありますので参考にしてください二つ 0aバイト。

wc -l行数を計算するために使用されていることも確認できます。最初のファイルでは2、2番目のファイルでは3。また、最後の改行文字が欠落している場合(ほとんどのツールで処理できますが、ファイルが実際に有効なテキストファイルではないことを意味します)、1行だけが計算されますwc

おすすめ記事