Я пытаюсь создать файл, и похоже, что vi
редактор добавляет $
в конце каждой строки. Я не знаю, что вызывает это или как это предотвратить vi
.
vi file.txt
12345
abcde
cat -v -e file.txt
12345$
abcde$
wc file.txt
2 2 12
Мне не нужны эти $
символы в конце; они ломают мои файлы автоматизации, которые зависят от количества символов. Почему количество слов показывает 12 символов, когда на самом деле в каждой строке по 5 символов?
VIM-версия 7.4.629
решение1
Комментарий @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, врасширенныйраздел). Но он будет работать на всем, что вы, скорее всего, будете использовать, основываясь на подсказках в обосновании.