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'
、、、^J
)0x0a
で終わります。つまり、改行文字は行区切り文字ではなく行終端文字です。これは特に最後の行に対応するため、ファイル全体に対応します。
たとえば、テキストファイルには次のものが含まれます。
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
。