linux shell wc -c 字元數+1

linux shell wc -c 字元數+1

我使用命令 wc -c 來計算字元數,但它給出了錯誤的數字,例如字元數加一:

echo "k" | wc -c 

它給了我 2 個字符

那為什麼不是1呢?

答案1

查看 的幫助訊息wc。此-c選項會列印出字元數。該echo命令預設包含換行符。當wc看到換行符時,它會將其計為另一個字符,因此會在結果中增加計數。您可以使用下面顯示的替代方案之一來解決這個問題;-w統計字數和-l行數。

echo "k" | wc -w 
echo "k" | wc -l

您可以透過管道輸出wctoawk來取得不包含換行符的字元數:

wc <filename> | awk '{print $3-$1}'

不含選項的預設輸出會wc依此順序列印換行符數($1 到 awk)、單字數和字元數($3 到 awk)。

答案2

當您執行 時echo "k",該echo命令會將換行符號附加到您要求其列印的內容(“k”)。您可以使用該-n選項來停用此功能:

echo -n k | wc -c
1

為了查看那個無形的字符,您可以轉儲流whithodhd

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

相關內容