#shell #unix #awk #sed
#оболочка #unix #awk #sed
Вопрос:
sed 's/<matching pattern>/replacing pattern/g' filename
Приведенная выше команда — это то, что я получил от переполнения стека. Но эта команда не работает в версии HP-UX B.11.11.
Также я хотел бы знать ответ на вопрос ниже? как найти и заменить шаблон соответствия во всех файлах в каталоге. Повторно вычисленное значение должно быть изменено / переписано в тот же файл и сохранено.
Я смог сопоставить и заменить все файлы, используя приведенную ниже команду, но не смог перезаписать / сохранить выходные данные в тот же файл.
awk 'match($0,/matching pattern/) {gsub(/matching pattern/,"replacing pattern")}1' *
Комментарии:
1. Пример был бы лучше. Какую строку вы хотите заменить среди всех файлов?
2. это простое действие sed, в чем ошибка HP? Попробуйте, может быть, с опцией
-e
3. @NeronLeVelu — Первый SED принимает соответствующую строку как <matchingpattern> и ищет этот шаблон. Если у меня есть совпадающее слово, например <happy>, оно заменяется шаблоном замены. Но если совпадающее слово счастливо, оно не заменяется.
4. и с этим
sed -e 's/[<]matching pattern[>]/replacing pattern/g' filename
?5. @NeronLeVelu он снова принимает строку matchin как <соответствующий шаблон> 🙁
Ответ №1:
Вы могли бы сделать это с помощью find
команды GNU,
find . -type f -exec sed -i 's/match/replace/g' {} ;
Он найдет файлы -> сопоставит строку -> заменит совпадение -> Сохранит изменения, внесенные в этот файл.
Комментарии:
1. Мой плохой: ( опция sed -i не поддерживается в моем окне unix. Будет ли какая-либо другая возможность добиться этого?