Заменить все вхождения, не меняя окончания файлов - PullRequest
0 голосов
/ 01 мая 2018

Чтобы заменить все вхождения одного слова другим во всех файлах с определенным расширением в текущем каталоге, я использую эту команду:

find . -type f -name '*.zz' -exec sed -i '' "s/replace_this/with_this/" {} +

Проблема в том, что он добавляет \n в конец файлов, которые не заканчиваются на \n. Теперь не поймите меня неправильно, я люблю \n файлы с окончаниями так же, как и следующий человек. Но я не хочу всех этих изменений в моем git diff. Какая команда для запуска делает то же самое, но не затрагивая окончания файлов?

Кстати, я использую emacs с адвокат-снарядом, так что если вместо этого есть удобный инструмент, то все будет в порядке.

macOS 10.13.4

1 Ответ

0 голосов
/ 02 мая 2018

Попробуйте perl пирог вместо sed с чем-то вроде этого:

perl -pi -e 's/replace_this/with_this/"

В вашем случае:

find . -type f -name '*.zz' -exec perl -pi -e  "s/replace_this/with_this/" {} +
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...