我想更改文本中与Bourne shell中的某个单词匹配某个单词的所有单词。例如:用bash中的另一个词替换单词
hello sara, my name is sara too.
变为:
hello mary, my name is mary too.
任何人可以帮助我吗?
我知道grep找到类似的词,但我想用其他词替换它们。
我想更改文本中与Bourne shell中的某个单词匹配某个单词的所有单词。例如:用bash中的另一个词替换单词
hello sara, my name is sara too.
变为:
hello mary, my name is mary too.
任何人可以帮助我吗?
我知道grep找到类似的词,但我想用其他词替换它们。
纯bash的语法:
before='hello sara , my name is sara too .'
after=${before//sara/mary}
echo $after
或SED语法:
sed 's/sara/mary/g' <<< $before
echo $after
OUTPUT:
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
的sed还可以做就地修饰。 – 2012-02-04 15:59:50
GNU的新版本,是的。 – 2012-02-04 16:01:53
您需要使用sed
代替字词
或者awk
awk '{gsub("sara","mary")}1' <<< "hello sara, my name is sara too."
为避免混淆'$ {s // sara/mary}'和's/sara/mary/g'',输入字符串最好被命名为's'以外的内容。 – galath 2015-12-02 10:22:23