3

Я пытаюсь сделать рекурсивный поиск и замену в HP-UX, и мне чего-то не хватает.

Что имею на данный момент:

find . -name "*.java" | xargs sed 's/foo/bar/g'

Я знаю, проблема в том, что он не заменяет встроенный файл. Я считаю, что в других ОС есть флаг -i, но, похоже, в моей версии HP-UX его нет.

Какие-либо предложения?

2 ответа2

1

вы можете обойти отсутствующие -i вот так (не проверено):

for i in `find . -name "*.java"`; do cp $i /tmp/$$; sed 's/foo/bar/g' < /tmp/$$ > $i;done
1

Вы всегда можете использовать ed

find . -name "*.java" | while IFS= read -r file; do
  ed "$file" <<ED_COMMANDS
%s/foo/bar/g
w
q
ED_COMMANDS
done

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .