web-dev-qa-db-ja.com

「wc」コマンドで、ファイルに1行しかないのに、実際には2行あると表示されるのはなぜですか。

この例を見てください:

$ cat < demo
man
car$ 
$ 
$ od -x < demo 
0000000 616d 0a6e 6163 0072
0000007
$ 
$ wc < demo 
1 2 7

ご覧のとおり、3文字(man:6d 61 6e)の後に改行(\n:0a)そしてさらに3つ(car:63 61 75)がNUL文字(00)で終了しました。明らかに、そのファイルには2行ありますが、wcコマンドは、ファイルに1行しかないことを報告します。何が得られますか?または、Unixで行としての資格を得るには、改行文字で終了する必要があると思いますか? NULはカウントされませんか?

9
user4087080

または、Unixで行としての資格を得るには、改行文字で終了する必要があると思いますか?

実際、そうです POSIX は次のように言っています:

Wcユーティリティは、1つ以上の入力ファイルを読み取り、デフォルトで、各入力ファイルに含まれる改行、単語、およびバイトの数をに書き込みます。標準出力。

7

より良い使用awk '{ print }' demo| wc -l

0
user172283