60MBを超えるサイズのテキストファイルがあります。5105043行にエントリがありますが、wc -lを実行すると、実際より1つ少ない5105042の結果しか得られません。なぜそれが起こっているのか誰かが知っていますか?
ファイルサイズが大きい場合はよくあることですか?
60MBを超えるサイズのテキストファイルがあります。5105043行にエントリがありますが、wc -lを実行すると、実際より1つ少ない5105042の結果しか得られません。なぜそれが起こっているのか誰かが知っていますか?
ファイルサイズが大きい場合はよくあることですか?
最後の行には改行が含まれていません。
必要な結果を得るための1つのトリックは次のとおりです。
sed -n '=' <yourfile> | wc -l
これはsed
、ファイル内の各行の行番号を出力するように指示しwc
、それがカウントされます。おそらくもっと良い解決策がありますが、これはうまくいきます。
ファイルの最後の行に改行の末尾がない可能性があります。IIRCwc -l
は、ファイル内の改行文字の数をカウントするだけです。
試してみる場合:cat -A file.txt | tail
最後の行に末尾のドル記号($
)が含まれていますか?
編集:
ファイルの最後の行に改行文字がない場合、次のように改行文字を追加して修正できます。
printf "\n" >> file.txt
の結果はwc -l
一貫しているはずです。
60 MBは少し大きいファイルのようですが、小さいサイズのファイルの場合です。1つのオプションは
cat -n file.txt
また
cat -n sample.txt | cut -f1 | tail -1