📅  最后修改于: 2023-12-03 15:24:22.683000             🧑  作者: Mango
在 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/ 匹配文本中的模式,使用 { } 来指定在匹配到模式时执行的命令。可以实现在匹配两个条件时,添加指定的文本行。