Команда cat, похоже, добавляет дополнительный символ $ в конце каждой строки.

Команда cat, похоже, добавляет дополнительный символ $ в конце каждой строки.

Я пытаюсь создать файл, и похоже, что 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, врасширенныйраздел). Но он будет работать на всем, что вы, скорее всего, будете использовать, основываясь на подсказках в обосновании.

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