用bash替换另一个单词

时间:2012-02-04 15:54:59

标签: linux bash terminal sh

我想将文本中与某个单词匹配的所有单词与bourne shell中的另一个单词进行更改。例如:

hello sara, my name is sara too.

成为:

hello mary, my name is mary too.

有人可以帮帮我吗? 我知道grep找到了类似的单词,但我想用其他单词替换它们。

4 个答案:

答案 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."