wc -l ファイル名に 1 行少なく表示されます。ご案内ください

wc -l ファイル名に 1 行少なく表示されます。ご案内ください

wc -l filename コマンドを使用します。ファイルの総行数が2の場合、1行は減りますが、1のみが表示されます。ご案内ください。

答え1

wc -l改行数、つまり正しく区切られた行数を数えます。

あなたの場合、おそらく何が起こっているのかは、ファイルに最後の改行の後に数バイトがあるということです。

したがって、ファイルは有効なテキストファイルではなく、一部のアプリケーションはこれらの余分なバイトを無視し、一部のアプリケーションはそれを追加の行として扱います(一部は欠落している改行を追加します)。

POSIX テキスト定義によると、これらの追加バイトは 1 行を構成しません。

ただし、POSIXに準拠している人はawkそれを追加のレコード形成として扱う必要があるため、次のようになります。

awk 'END {print NR}' < your-file

数学をすることができます。

このような場合を考えると、行方不明の改行を追加する方が良いでしょう。

printf '\n' >> your-file

例:

$ printf 'a\nb' | wc -l
1
$ printf 'a\nb\n' | wc -l
2
$ printf 'a\nb' | awk 'END {print NR}'
2

関連情報