wc のヘルプ メッセージを見てください。 . -c オプションは、文字数を出力します。 echo コマンドには、デフォルトで改行文字が含まれています。 wcのとき 改行を別の文字としてカウントするため、結果に追加のカウントが表示されます。以下に示す代替手段のいずれかを使用して、これを回避できます。 -w 単語数と -l を数えます 行数を数えます。
echo "k" | wc -w
echo "k" | wc -l
wc の出力をパイプできます awk まで 改行文字を除いた文字数を取得するには:
wc <filename> | awk '{print $3-$1}'
wc のデフォルト出力 オプションを指定しないと、改行文字数 ($1 から awk)、単語数、文字数 ($3 から awk) がこの順序で出力されます。
あなたが echo "k" 、echo コマンドは、出力するように要求したものに改行文字を追加します ("k")。 -n を使用できます これを無効にするオプション:
echo -n k | wc -c
1
目に見えないものを表示するため 文字、od でストリームをダンプできます または 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
echo を使用しているためです。 、文字列に改行を追加します。 printf を使用 代わりに:
$ echo k | wc -c
2
$ printf k | wc -c
1