Frage Warum sagt der "wc" -Befehl, dass ich nur eine Zeile in einer Datei habe, obwohl es tatsächlich zwei gibt?


Schauen Sie sich dieses Beispiel bitte an:

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

Wie du sehen kannst, habe ich 3 Charaktere (man: 6d 61 6e) gefolgt von einer neuen Zeile (\n: 0a) und dann noch drei (car: 63 61 75) mit einem NUL-Zeichen (00) beendet. Natürlich gibt es zwei Zeilen in dieser Datei, aber der wc-Befehl meldet, dass die Datei nur einen hat. Was gibt? Oder denkst du, dass du, um dich als Unix-Zeile zu qualifizieren, mit einem Newline-Zeichen beenden musst? NUL zählt nicht?


5
2017-10-03 11:27


Ursprung


Antworten:


Oder denkst du, dass du sein musst, um dich als eine Linie in Unix zu qualifizieren   mit einem Newline-Zeichen abgeschlossen?

Eigentlich ja - sogar POSIX sagt, dass:

Das wc-Dienstprogramm soll eine oder mehrere Eingabedateien lesen und standardmäßig   schreibe die Nummer von Zeilenumbrüche, Wörter und Bytes in jedem enthalten   Eingabedatei für die Standardausgabe.


5
2017-10-03 11:36