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

Вы можете передать вывод to, wcчтобы awkполучить количество символов, исключая символы новой строки:

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

По умолчанию при wcотсутствии параметров выводится количество символов новой строки (от $1 до awk), количество слов и количество символов (от $3 до awk) в указанном порядке.

решение2

когда вы echo "k", echoкоманда добавляет символ новой строки к тому, что вы попросили ее вывести ("k"). Вы можете использовать опцию, -nчтобы отключить это:

echo -n k | wc -c
1

Для просмотра этогоневидимыйсимвол, вы можете выгрузить поток с помощью odили 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

Связанный контент