Der Befehl wc zählt zusätzliche Zeichen

7
cat > file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.

wc file
1      16      82 file

Kann jemand erklären, warum der wcBefehl in diesem Fall 3 zusätzliche Zeichen zurückgibt?

Jennifer Nghi Nguyen
quelle
Ich weiß es nicht. Wenn Sie diesen Satz eingeben, gefolgt von einem NL & Strg-D für mich, wird die wc-Datei 1 16 80-Datei gerendert. In welcher Umgebung befinden Sie sich?
Tink
5
Weil Sie 3 Leerzeichen am Ende der Zeile haben? Tun Sie od -c file, um genau zu sehen, was da drin ist.
vonbrand
Verwenden Sie wc -mdiese Option, um Zeichen zu zählen. wcund wc -cgeben Sie eine Byteanzahl an, keine Zeichenanzahl.
Stéphane Chazelas

Antworten:

36

wczeigt 3 Zeichen mehr an, weil Ihre Beispieldatei ein ausgefallenes Unicode-Apostroph enthält (höchstwahrscheinlich, weil Sie den Inhalt von einem Browser oder Texteditor kopiert haben):

$ cat file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.
$ wc file
1      16      82 file

Mit einfachem ASCII-Apostroph ':

$ cat file2
Amy looked at her watch. He was late. The sun was setting but Jake didn't care.
$ wc file
1      16      80 file2

wcStandardmäßig wird die Anzahl der Bytes pro Handbuch angezeigt :

Zeilenumbruch, Wort und Byte zählen für jede Datei

Für die Anzahl der Zeichen kann ein -mArgument verwendet werden:

$ cat file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.
$ wc -m file
      80 file.txt
Techraf
quelle
7
Ja, und da wczählt Bytes , nicht Zeichen . pubs.opengroup.org/onlinepubs/009604499/utilities/wc.html
Meilen
5
Verwenden Sie wc -mdiese Option, um Zeichen zu zählen, wc -cund die dritte Spalte in der wcAusgabe zählt Bytes, keine Zeichen.
Stéphane Chazelas
12

Wenn Sie die Datei weiterleiten xxd, um eine hexadezimale Ausgabe neben dem ASCII zu sehen, können Sie sehen, ob es zusätzliche Zeichen gibt, die Sie nicht sehen können oder die nicht gedruckt werden können.

$ cat file
one‏ and ‏two

$ cat file | wc
      1       3      18

$ cat file | xxd
00000000: 6f6e 65e2 808f 2061 6e64 20e2 808f 7477  one... and ...tw
00000010: 6f0a                                     o.
Rabin
quelle
2

wczählt Bytes, keine Zeichen. Wenn Sie Zeichen zählen möchten, sollten Sie die folgende -mOption verwenden :

cat > file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.

wc -l -w -m file
1      16      80 file

Das verbleibende "zusätzliche Zeichen" ist in der Tat die neue Zeile, die Sie am Ende der Datei haben.

Dmitry Grigoryev
quelle