Podívejte se na zprávu nápovědy pro wc
. -c
volba vytiskne počet znaků. echo
příkaz ve výchozím nastavení obsahuje znak nového řádku. Když wc
vidí nový řádek, počítá to jako další znak, a tedy další počet ve vašem výsledku. Můžete to obejít pomocí jedné z níže uvedených alternativ; -w
počítá počet slov a -l
počítá počet řádků.
echo "k" | wc -w
echo "k" | wc -l
Výstup wc
můžete kanálem až awk
získat počet znaků kromě znaků nového řádku:
wc <filename> | awk '{print $3-$1}'
Výchozí výstup wc
bez možnosti vytiskne počet znaků nového řádku ($1 až awk), počet slov a počet znaků ($3 až awk) v tomto pořadí.
když echo "k"
, echo
příkaz připojí znak nového řádku ke všemu, co jste ho požádali o vytištění ("k"). Můžete použít -n
možnost toto zakázat:
echo -n k | wc -c
1
Za zobrazení toho neviditelného znak, můžete vypsat stream pomocí od
nebo hd
:
echo k | od -t c
0000000 k \n
echo k | hd
00000000 6b 0a |k.|
echo k | od -t a -A n
k nl
Je to proto, že používáte echo
, který přidá nový řádek do vašeho řetězce. Použijte printf
místo toho:
$ echo k | wc -c
2
$ printf k | wc -c
1