Bash替换特定条件为真的字符串

Kha*_*eal 1 bash shell replace sed

我试图在同一行中替换特定条件为真的字符串

我有一些文件有一些行.我在用另一个单词(word3)开头的每一行中用另一个单词(word1)替换一个单词(word1)

例如:

foo moo see
kaa haa qee
foo dee see
uuu ooo rrr
foo dee laa
Run Code Online (Sandbox Code Playgroud)

我想在以"foo"开头的每一行中用"raa"替换"see"这个词.这样做会导致线条如下:

foo moo raa
kaa haa qee
foo dee raa
uuu ooo rrr
foo dee laa
Run Code Online (Sandbox Code Playgroud)

有人告诉我,我可以使用sed做到这一点,但我不知道如何做到这一点.

请帮忙!(仅限sed)

fed*_*qui 7

这是非常基本的sed:

$ sed '/^foo/s/see/raa/g' file
foo moo raa
kaa haa qee
foo dee raa
uuu ooo rrr
foo dee laa
Run Code Online (Sandbox Code Playgroud)

说明

  • sed 's/something/replacement/g'somethingreplacement.替换字符串.这g表明它每次都可以完成.
  • 添加/^foo/使它只考虑开头的行foo.
  • 如果您希望对文件进行编辑,即使用替换更新文件内容,请添加-i:sed -i.bak '/^foo/s/see/raa/g' file.file.bak将包含以前的文件.

更新

如何使用变量而不是foo,请参阅,raa? - Khaleal

像这样和双引号:

$ d="foo"
$ e="see"
$ sed "/^$d/s/$e/raa/g" file
foo moo raa
kaa haa qee
foo dee raa
uuu ooo rrr
foo dee laa
Run Code Online (Sandbox Code Playgroud)

等等.