Найти контрольные символы и удалить его - PullRequest
0 голосов
/ 08 апреля 2020

Существует ли какая-либо однострочная команда для рекурсивного поиска файла .ctl во всех каталогах и удаления из него управляющих m символов?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2020

dos2 unix родился для решения этой проблемы.

Вы можете найти все целевые файлы, найдя или любую другую программу, затем

dos2unix filename

Предыстория этой проблемы ( Доминик )

Поясним, что это такое: в UNIX ENTER переводится как chr (13) (ASCII-код возврат каретки), в DOS (Windows) ENTER переводится как chr (13) + chr (10) (возврат каретки в сочетании с символом перевода строки). Когда вы открываете Windows текстовый файл в UNIX, вы видите этот символ chr (10) (который вам не нужен). Упомянутая команда dos2 unix ищет этот chr (13) + chr (10) и удаляет символы chr (10). - Доминик

1 голос
/ 08 апреля 2020

Используйте find с sed.

С GNU sed:

find . -name "*ctl" -type f -exec sed -i 's,^M,,' "{}" \;

С BSD sed:

find . -name "*ctl" -type f -exec sed -i '' -e 's,^M,,' "{}" \;

^M в аргументе sed является буквальным Control-M, а не ASCII ^ с последующим M. Нажмите Control - v , а затем M , чтобы ввести его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...