Как найти точное совпадение с помощью sed?

#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. Будет ли какая-либо другая возможность добиться этого?