我使用命令 wc -c 來計算字元數,但它給出了錯誤的數字,例如字元數加一:
echo "k" | wc -c
它給了我 2 個字符
那為什麼不是1呢?
答案1
查看 的幫助訊息wc
。此-c
選項會列印出字元數。該echo
命令預設包含換行符。當wc
看到換行符時,它會將其計為另一個字符,因此會在結果中增加計數。您可以使用下面顯示的替代方案之一來解決這個問題;-w
統計字數和-l
行數。
echo "k" | wc -w
echo "k" | wc -l
您可以透過管道輸出wc
toawk
來取得不包含換行符的字元數:
wc <filename> | awk '{print $3-$1}'
不含選項的預設輸出會wc
依此順序列印換行符數($1 到 awk)、單字數和字元數($3 到 awk)。
答案2
當您執行 時echo "k"
,該echo
命令會將換行符號附加到您要求其列印的內容(“k”)。您可以使用該-n
選項來停用此功能:
echo -n k | wc -c
1
為了查看那個無形的字符,您可以轉儲流whithod
或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
答案3
這是因為您正在使用echo
,它會在字串中添加換行符。改用printf
:
$ echo k | wc -c
2
$ printf k | wc -c
1