найдите и sed (поиск и замена)

Я верю тому, что Вы ищете:

tr -d 0-9
27
19.04.2012, 02:45
1 ответ

В первую очередь, удостоверьтесь, что Вы используете регулярные кавычки ASCII как " и ' (коды ASCII 0x22 и 0x27, соответственно) в сценариях оболочки, потому что пример в Вашем сообщении содержит нестандартные символы кавычки. Если Вы смотрите тесно, они выглядят немного отличающимися. По всей вероятности это - ошибка вставки копии от формата документа обогащенного текста как Word, OOWriter или даже окно браузера.

Так как Вы находитесь на Mac, у Вас по всей вероятности есть реализация FreeBSD sed, в этом случае необходимо записать команде этот путь:

find . -name "*.java" -exec sed -i '' s/foo/bar/g {} +

(сюда использование + вместо \; постараться не выполнять тот sed вызов на файл).

В реализации FreeBSD sed -i флагу нужен аргумент: расширение файла резервной копии. Например, с -i .bak команда скопировала бы file1.txt как file1.txt.bak сначала прежде, чем выполнить замену в исходном файле. Используя пустой аргумент '' средства не использовать файл резервной копии, который, кажется, то, что Вы хотите.

То же самое в GNU (или NetBSD, OpenBSD, busybox) реализация было бы:

find . -name "*.java" -exec sed -i s/foo/bar/g {} +

Спасибо @bahamat и @Mikel и @pieter-breed для улучшения моего ответа с Вашими комментариями.

35
27.01.2020, 19:39

Теги

Похожие вопросы