我想将文本中与某个单词匹配的所有单词与bourne shell中的另一个单词进行更改。例如:
hello sara, my name is sara too.
成为:
hello mary, my name is mary too.
有人可以帮帮我吗? 我知道grep找到了类似的单词,但我想用其他单词替换它们。
答案 0 :(得分:14)
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 .
答案 1 :(得分:8)
您可以使用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 .
答案 2 :(得分:3)
您可以使用sed:
# sed 's/sara/mary/g' FILENAME
将输出结果。 s ///构造意味着使用正则表达式进行搜索和替换。末尾的'g'表示“每个实例”(不仅仅是第一个)。
您也可以使用perl并编辑文件:
# perl -p -i -e 's/sara/mary/g;' FILENAME
答案 3 :(得分:1)
或awk
awk '{gsub("sara","mary")}1' <<< "hello sara, my name is sara too."