ある単語をBourneShellの別の単語と一致させるテキスト内のすべての単語を変更したいと思います。例えば:
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を使用する:
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."