Я пытаюсь создать файл, и похоже, что редактор vi
добавляет $
в конец каждой строки. Я не знаю, что вызывает это или как предотвратить это в vi
.
vi file.txt
12345
abcde
cat -v -e file.txt
12345$
abcde$
wc file.txt
2 2 12
Мне не нужны символы $
в конце; они ломают мои файлы автоматизации, которые зависят от количества символов. Почему в счетчике слов отображается 12 символов, если на самом деле каждая строка состоит из 5 символов?
VIM version 7.4.629
Комментарий @ steeldriver верен: cat
показывает окончания строк с помощью $
(как vi
мог бы, если бы вы вежливо спросили, используя ": set list" ). Дополнительный символ в строке - это новая строка (невидимый символ в конце каждой строки текста).
Если вам нужен только счет печатаемого текста, вы можете отфильтровать файл перед его обработкой с помощью wc
, например, используя tr
с -d
вариант. Вот сценарий, который считается примером:
#!/bin/sh
cat $0 |wc
cat $0 | tr -d '\r\n\t' | wc
cat $0 | tr -d '[:cntrl:]' |wc
хотя последняя строка, возможно, недостаточно переносима для вашего использования (она находится в POSIX , в разделе extended ). Но он будет работать на всем, что вы, вероятно, будете использовать, исходя из подсказок в обосновании.