Wc
‘wc -m’ 顯示一個字元太多
我正在編寫一個使用
wc -m
/wc -c
來計算字元串中字母數量的程序。它計算字母,但增加了一個。這是我目前擁有的:echo "enter a word" read var1 echo $var1 | wc -c
當我輸入單詞時,它會成功執行某些操作,例如,如果我輸入“test”,它將輸出 5。
為什麼要這樣做並且有解決辦法嗎?
這與您用於將字元串通過管道傳輸到
wc
. 該echo
命令在您的字元串末尾添加了一個額外的字元test
,一個新的換行符,\n
.所以實際上你在計算這個:
test\n
.-n
您可以通過切換到來禁用此行為echo
。$ echo -n "test" | wc -c 4
或者使用不同的命令來生成您的字元串,例如
printf
:$ printf "%s" "test" | wc -c 4
看看發生了什麼
您可以使用
od
查看 getitng 傳遞給管道的實際字元,如下所示:$ echo "test" | od -c 0000000 t e s t \n 0000005 $ echo -n "test" | od -c 0000000 t e s t 0000004