Wc

‘wc -m’ 顯示一個字元太多

  • March 21, 2019

我正在編寫一個使用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

引用自:https://unix.stackexchange.com/questions/163141