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)
这是非常基本的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'
something
用replacement
.替换字符串.这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)
等等.