我正在尝试在同一行中替换特定条件为true的字符串
我有一些包含某些行的文件。我用另一个单词(word3)开头的每一行替换一个单词(word1)和另一个单词(word2)
例如:
foo moo see
kaa haa qee
foo dee see
uuu ooo rrr
foo dee laa
我想在以“foo”开头的每一行中用“raa”替换“see”这个词。这样做会导致线条像:
foo moo raa
kaa haa qee
foo dee raa
uuu ooo rrr
foo dee laa
我被告知我可以使用sed来做到这一点,但我不知道该怎么做。
请帮忙! (仅限sed)
答案 0 :(得分:7)
这是非常基本的sed
:
$ sed '/^foo/s/see/raa/g' file
foo moo raa
kaa haa qee
foo dee raa
uuu ooo rrr
foo dee laa
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
等等。
答案 1 :(得分:3)
我知道它要求sed
,但如果他们愿意,可以发布awk
给其他人阅读。
awk '/^foo/ {sub(/see/,"raa")}1' file