Команда WC в linux
Ниже приводится содержимое, хранящееся в моем файле
This is my Input
Таким образом, с помощью wc -c
мы можем получить количество символов, хранящихся в файле.
Мой ожидаемый результат для вышеуказанного файла, отредактированного с помощью VIM в Ubuntu, равен 16. Но, wc -c
возвращает 17
.
Почему результат такой? В конце очереди нет даже возврата кареты. Итак, что такое 17-й символ?




Ответы - Команда WC в linux / WC command in linux

23.07.2015 01:17:43
конечно, вы должны были войти. может быть, ты не видишь этого. рассмотрим эти два примера:
echo -n "This is my Input" | wc -c
16
потому что -Н для избежания войти, но
echo "This is my Input" | wc -c
17
посмотрите на этот пример и тоже увидите новую строку.
Как увидеть новую строку?
echo "This is my Input" | od -c
файлы дампа od в восьмеричном и других форматах
- c выберите символы ASCII или экранирование обратной косой черты






foo="This is my input"
. Строка не содержит новой строки, но если вы попытаетесь пересчитать ее символы с помощью команды echo "$foo" | wc -c
, новая строка будет добавлена командой echo
. Для подсчета символов в строке в bash используйте ${#foo}
.








23.07.2015 01:24:30
входная строка, которую вы вводите в качестве входной, не имеет ввода / новой строки, но echo присваивает ей ввод/новую строку. И туалет -с читается войти или новой строки от команды Echo.
например
echo k | wc -c
возвращает 2, так как 1 для k и 1 для новой строки, добавленной echo
пока
echo -n k | wc -c
возвращает 1, так как-n подавляет новую строку.
но wc-c всегда читает новую строку.
Вы можете попробовать
printf k | wc -c
возврат 1
смотрите, что он делает в файле
bash-4.1$ echo 1234 > newfile
bash-4.1$ cat newfile
1234
bash-4.1$ cat -e newfile
1234$
bash-4.1$ printf 1234 > newfile
bash-4.1$ cat newfile
1234bash-4.1$ cat -e newfile
1234bash-4.1$





23.07.2015 01:40:19
В Linux, когда VIM сохраняет буферы, он завершает каждую строку, добавляя Терминатор новой строки. Шестнадцатеричный дамп редактируемого файла VIM.
Вы можете открыть свой файл и ввести:!xxd
для просмотра Хекс-дамп или использовать непосредственно hexdump yourfile
команды.
0000000: 5468 6973 2069 7320 6d79 2049 6e70 7574 This is my Input
0000010: 0a .
~
~
~
Там вы можете видеть, что файл добавил 0a
в конце файла.
поэтому, когда вы используете wc -c
, чтобы получить номер этого файла, он вернет 17, которые включили новый символ строки.

/0
вместо \0
и chaeracter
против character
. Дополнительный символ, подсчитываемый wc-c, не является нулем (0
), это Терминатор строки, скорее всего, a \n
. В файле формата DOS вы получите 18, потому что это будет двухбайтовый линейный Терминатор \r\n
.