Команда wc подсчитывает лишние символы

Используя ansible , вы запускаете все свои сценарии удаленно, поэтому у вас будет файл a.txt на каждом сервере.
Я мог бы предложить следующие варианты:

  1. Измените свой сценарий для печати результатов, чтобы весь вывод был запущен ansible , а затем проанализировал этот вывод.

  2. Используйте модуль ansible fetch для получения всех a.txt после запуска скриптов, например: ansible test -m fetch -a "src = a.txt dest = out / "

  3. Используйте модуль ansible setup для получения имен хостов и IP-адресов, например: ansible test -m setup -a 'filter = ansible_hostname' и более подробную информацию о ] http://docs.ansible.com/ansible/setup_module.html

7
24.02.2016, 01:07
3 ответа

направьте файл через xxd , чтобы увидеть шестнадцатеричный вывод рядом с ascii, это позволит вам увидеть, есть ли дополнительные символы, которые вы не видны или не печатаются.

$ cat file
one‏ and ‏two

$ cat file | wc
      1       3      18

$ cat file | xxd
00000000: 6f6e 65e2 808f 2061 6e64 20e2 808f 7477  one... and ...tw
00000010: 6f0a                                     o.
12
27.01.2020, 20:13

wc показывает на 3 символа больше, потому что ваш примерный файл содержит необычный апостроф Unicode ' (скорее всего, потому что вы скопировали содержимое из браузера или текстового редактора):

$ cat file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.
$ wc file
1      16      82 file

С простым апострофом ASCII ':

$ cat file2
Amy looked at her watch. He was late. The sun was setting but Jake didn't care.
$ wc file
1      16      80 file2

wc по умолчанию отображает количество байтов на руководство :

перевод строки, количество слов и байтов для каждого файла

для подсчета символов можно использовать аргумент -m :

$ cat file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.
$ wc -m file
      80 file.txt
36
27.01.2020, 20:13

wc считает байты, а не символы. Если вы хотите считать символы, вам следует использовать опцию -m:

cat > file
Amy looked at her watch. He was late. The sun was setting but Jake didn’t care.

wc -l -w -m file
1      16      80 file

Оставшийся "лишний символ" - это действительно новая строка в конце файла.

2
27.01.2020, 20:13

Теги

Похожие вопросы