(gelöst) echo 1234567890 | wc -m ... ist nicht 10 ??

Du hast Probleme mit Deinem eMail-Programm, Webbrowser oder Textprogramm? Dein Lieblingsprogramm streikt?
Antworten
ren22

(gelöst) echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von ren22 » 07.12.2019 07:24:51

Hallo,

ich bin gerade verwundert warum "wc" mir 11 ausgibt, obwohl ich nur 10 Zeichen an "wc" pipe!
Kann mir jemand mal bitte erklären warum 11 und nicht 10 heraus kommt ? Was ist das 11'te Zeichen ?

Code: Alles auswählen

echo 1234567890 | wc -m
11

Danke
Zuletzt geändert von ren22 am 07.12.2019 14:02:49, insgesamt 1-mal geändert.

Benutzeravatar
ohnex
Beiträge: 392
Registriert: 31.01.2010 22:35:36

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von ohnex » 07.12.2019 08:21:43

Hi
echo fügt einen Zeilenumbruch ans Ende der Zeichenkette an.
Ciao

tobo
Beiträge: 2013
Registriert: 10.12.2008 10:51:41

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von tobo » 07.12.2019 08:42:30

Sichtbar z.B. mit od:

Code: Alles auswählen

$ echo 1234567890 | od -c
0000000   1   2   3   4   5   6   7   8   9   0  \n
0000013
$ 

Benutzeravatar
Meillo
Moderator
Beiträge: 8819
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von Meillo » 07.12.2019 11:35:42

Meine Vorredner haben schon alles gesagt, was ich hatte beitragen wollen, darum von mir -- mit einem Augenzwinkern -- nur noch die Bonusfrage: Warum schreibt od(1) denn 13 hin? Ich dachte, es sind 11 Zeichen. ;-)

(Wer's weiss bitte nicht gleich antworten, damit die, die's nicht wissen knobeln koennen.)



Edit: Verwende mal printf(1) statt echo(1).
Use ed once in a while!

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von thoerb » 07.12.2019 11:50:45

Meillo hat geschrieben: ↑ zum Beitrag ↑
07.12.2019 11:35:42
Warum schreibt od(1) denn 13 hin? Ich dachte, es sind 11 Zeichen. ;-)
OD steht für octal dump. 8+3 = 11 :wink:

miwie
Beiträge: 116
Registriert: 10.07.2002 08:59:23
Kontaktdaten:

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von miwie » 07.12.2019 12:09:28

ren22 hat geschrieben: ↑ zum Beitrag ↑
07.12.2019 07:24:51

Code: Alles auswählen

echo 1234567890 | wc -m

Code: Alles auswählen

echo -n 1234567890 | wc -m

ren22

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von ren22 » 07.12.2019 13:43:44

Vielen herzlichen Dank an alle Beteiligten, dass ist erstmal "so ein Ding" was man wissen muss, dass echo automatisch einen Zeilenumbruch bzw. NUL BYTE string mit ausgibt ... aber "wie immer", wenn man den CODE im Detail sieht ist es wiedermal alles logisch, hätte man auch "wie immer" vorher drauf kommen können.

Danke

Benutzeravatar
Meillo
Moderator
Beiträge: 8819
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von Meillo » 07.12.2019 14:24:13

ren22 hat geschrieben: ↑ zum Beitrag ↑
07.12.2019 13:43:44
Vielen herzlichen Dank an alle Beteiligten, dass ist erstmal "so ein Ding" was man wissen muss, dass echo automatisch einen Zeilenumbruch bzw. NUL BYTE string mit ausgibt ...
Echo gibt eine Textzeile aus, die seine Argumente, Leerzeichen-separariert, enthaelt. Eine Textzeile in Unix endet mit einem Newline-Zeichen. -- Das ist die Logik von echo(1).

(Ein NUL-Byte ist etwas anderes. ;-) Jeder String in C ist mit einem Byte vom Wert 0, d.h. einem Null-Byte (in der ASCII-Tabelle als NUL geschrieben), beendet.)


Und fuer alle die's interessiert, hier die unvergessliche Sage ``The UNIX and the Echo'' aus dem Buch ``The Unix Programming Environment'':
https://stackoverflow.com/a/3291618
... ich muss jedenfalls immer daran denken, wenn es um das Newline bei echo(1) geht.
Use ed once in a while!

thoerb
Beiträge: 1677
Registriert: 01.08.2012 15:34:53
Lizenz eigener Beiträge: MIT Lizenz

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von thoerb » 07.12.2019 14:43:18

Meillo hat geschrieben: ↑ zum Beitrag ↑
07.12.2019 14:24:13
... ich muss jedenfalls immer daran denken, wenn es um das Newline bei echo(1) geht.
Mich erinnert das an die chomp-Funktion nach <STDIN> bei Perl.

Benutzeravatar
Meillo
Moderator
Beiträge: 8819
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: echo 1234567890 | wc -m ... ist nicht 10 ??

Beitrag von Meillo » 07.12.2019 15:08:25

thoerb hat geschrieben: ↑ zum Beitrag ↑
07.12.2019 14:43:18
Mich erinnert das an die chomp-Funktion nach <STDIN> bei Perl.
Stimmt. Das ist auch bei mir etwas das von meiner wenigen Perl-Programmierung im Gedaechtnis geblieben ist.
Use ed once in a while!

Antworten