"wc -m" は 1 文字をあまりにも多く表示します。

"wc -m" は 1 文字をあまりにも多く表示します。

wc -mwc -c私は/を使って文字列の文字数を数えるプログラムを書いています。文字数を数えますが、文字を追加します。これが私が現在持っているものです:

echo "enter a word"
read var1
echo $var1 | wc -c

単語を入力すると正常に実行されますが、たとえば「test」と入力すると 5 が出力されます。

なぜこのようなことをするのですか?解決策はありますか?

答え1

これは文字列をwc。このechoコマンドは、文字列の末尾に追加の文字であるtest改行文字を挿入します\n

だから実際にはこれを計算していますtest\n-n切り替えてこの動作を無効にできますecho

$ echo -n "test" | wc -c
4

別のコマンドを使用して文字列を生成します。例printf:

$ printf "%s" "test" | wc -c
4

何が起こったのか見て

これを使用して、od次のようにパイプに渡された実際の文字を確認できます。

$ echo "test" | od -c
0000000   t   e   s   t  \n
0000005

$ echo -n "test" | od -c
0000000   t   e   s   t
0000004

関連情報