📜  如何在 sed linux 中放置两个条件 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:24:22.683000             🧑  作者: Mango

如何在 sed linux 中放置两个条件

在 sed 中,我们可以使用 /pattern/ 来匹配文本中的模式,并使用 { } 来指定在匹配到模式时执行的命令。通过结合使用这些语法,我们可以在 sed 中放置两个条件。

举例说明

假设我们有一个名为 "file.txt" 的文本文件,其内容如下:

hello world
hello sed
hello linux

现在,我们想要在匹配 "hello" 且后跟 "world" 的行后面加入一行 "matched"。我们可以使用以下命令:

sed '/hello.*world/{a matched}' file.txt

解释一下这个命令:

  • /hello.*world/ 匹配 "hello" 和 "world" 之间的任何字符,其中 * 可以匹配 0 个或多个任意字符。
  • {a matched} 在匹配到 /hello.*world/ 时,在该行之后添加一行 "matched"。

执行上述命令后,我们将得到以下输出:

hello world
matched
hello sed
hello linux

现在,我们还想在匹配 "hello" 且后跟 "linux" 的行后面加入一行 "matched2"。为了实现这个目标,我们需要结合使用多个命令,如下所示:

sed '/hello.*world/{/hello.*linux/{a matched\nmatched2}}' file.txt

解释一下这个命令:

  • /hello.*world/ 匹配 "hello" 和 "world" 之间的任何字符。
  • /hello.*linux/ 匹配 "hello" 和 "linux" 之间的任何字符。
  • {/hello.*linux/{a matched\nmatched2}} 在匹配到 /hello.*world/ 的行中,再匹配 /hello.*linux/,在该行之后添加两行 "matched" 和 "matched2"。

执行上述命令后,我们将得到以下输出:

hello world
hello sed
hello linux
matched
matched2
总结

通过以上例子,我们可以知道在 sed 中如何放置两个条件。使用 /pattern/ 匹配文本中的模式,使用 { } 来指定在匹配到模式时执行的命令。可以实现在匹配两个条件时,添加指定的文本行。