我想更改文本中與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