Ответ 1
Pure Bash путь:
before='hello sara , my name is sara too .'
after="${before//sara/mary}"
echo "$after"
ИЛИ используя sed:
after=$(sed 's/sara/mary/g' <<< "$before")
echo "$after"
ВЫХОД:
hello mary , my name is mary too .
Я хочу изменить все слова в тексте, который соответствует определенному слову с другим в оболочке bourne. Например:
hello sara, my name is sara too.
становится:
hello mary, my name is mary too.
Может кто-нибудь мне помочь?
Я знаю, что grep находит похожие слова, но я хочу заменить их другим словом.
Pure Bash путь:
before='hello sara , my name is sara too .'
after="${before//sara/mary}"
echo "$after"
ИЛИ используя sed:
after=$(sed 's/sara/mary/g' <<< "$before")
echo "$after"
ВЫХОД:
hello mary , my name is mary too .
Вы можете использовать sed для этого:
$ sed s/sara/mary/g <<< 'hello sara , my name is sara too .'
hello mary , my name is mary too .
Или если вы хотите изменить файл на месте:
$ cat FILE
hello sara , my name is sara too .
$ sed -i s/sara/mary/g FILE
$ cat FILE
hello mary , my name is mary too .
Вы можете использовать sed:
# sed 's/sara/mary/g' FILENAME
выведет результаты. Конструкция s///означает поиск и замену с использованием регулярных выражений. "G" в конце означает "каждый экземпляр" (а не только первый).
Вы также можете использовать perl и редактировать файл на месте:
# perl -p -i -e 's/sara/mary/g;' FILENAME
Или awk
awk '{gsub("sara","mary")}1' <<< "hello sara, my name is sara too."
Вам нужно использовать sed
для замены слов