9

60MBを超えるサイズのテキストファイルがあります。5105043行にエントリがありますが、wc -lを実行すると、実際より1つ少ない5105042の結果しか得られません。なぜそれが起こっているのか誰かが知っていますか?

ファイルサイズが大きい場合はよくあることですか?

4

3 に答える 3

8

最後の行には改行が含まれていません。

必要な結果を得るための1つのトリックは次のとおりです。

sed -n '=' <yourfile> | wc -l

これはsed、ファイル内の各行の行番号を出力するように指示しwc、それがカウントされます。おそらくもっと良い解決策がありますが、これはうまくいきます。

于 2012-09-27T07:32:06.757 に答える
3

ファイルの最後の行に改行の末尾がない可能性があります。IIRCwc -lは、ファイル内の改行文字の数をカウントするだけです。

試してみる場合:cat -A file.txt | tail最後の行に末尾のドル記号($)が含まれていますか?

編集:

ファイルの最後の行に改行文字がない場合、次のように改行文字を追加して修正できます。

printf "\n" >> file.txt

の結果はwc -l一貫しているはずです。

于 2012-09-27T07:22:01.030 に答える
0

60 MBは少し大きいファイルのようですが、小さいサイズのファイルの場合です。1つのオプションは

cat -n file.txt

また

cat -n sample.txt | cut -f1 | tail -1
于 2020-12-21T00:37:51.537 に答える