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