gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:28:09 25 4
gpt4 key购买 nike

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

我有一个包含几行的文件。我在以另一个词 (word3) 开头的每一行中用另一个词 (word2) 替换一个词 (word1)

例如:

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)

最佳答案

这是非常基本的 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'replacement 替换 something 字符串。 g 表示每次都可以完成。
  • 添加 /^foo/ 使其只考虑以 foo 开头的行。
  • 如果您希望就地编辑文件,即用替换更新文件内容,请添加 -i:sed -i.bak '/^foo/s/see/raa/g' 文件file.bak 将包含之前的文件。

更新

How to use variables instead of foo, see, 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

等等。

关于Bash 替换特定条件为真的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20664446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com