wc -lが空でないファイルにゼロ行があることを知らせるのはなぜですか?

wc -lが空でないファイルにゼロ行があることを知らせるのはなぜですか?

xclip/は、xsel次のことができるユーティリティです。パイプクリップボード出力Ubuntuのシェルに。残念ながら、コマンドとの統合は失敗したようですwc

この試み。新しいファイルを開き、次のように入力します。

this is a line

行末でEnterキーを押す必要はありません。

次に、このテキストをコピーして次のことを試してみてください。

$ xsel -o | wc -l
0

出力は0ですが、実際には1でなければなりません。ファイルを保存します(名前を付けますmyfile.txt)。

今試してください:

$ cat myfile.txt | wc -l
1

予想通り、出力は1です。

最初のケースでは、出力がゼロの理由は何ですか?

ベストアンサー1

あなたが持っている問題は、wc -l新しい行を数えることです。まだ実際に入力していないので、\n実際には新しい行はありません。

から抜粋wcマニュアルページ

各 FILE の改行文字、単語数、バイト数を印刷するか、複数の FILE が指定されている場合は行の総数を印刷します。 FILE がない場合、または FILE が - の場合、標準入力を読み込みます。単語は、スペースで区切られた長さがゼロ以外の文字のシーケンスです。

wc文字数()を数えるように変更すると、-c実際にうまく機能し、文字数を数えることがわかります。

$ xsel -o | wc -c
14

これをファイルに保存すると、ファイルの末尾に改行文字を追加する効果があります。

おすすめ記事