📜  sed 在两个模式之间提取字符串 - Shell-Bash (1)

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

用sed命令在两个模式之间提取字符串

简介

sed 是一款用于对文本进行流式编辑的工具。其中一项非常常见的操作是从文件中提取出特定字符串或数据。它可以用于在字符串或文件中查找特定文本,并且还可以将找到的文本替换为新的字符串。

sed 中,我们可以使用两个模式之间定位并提取字符串。这些模式可以是行的模式,也可以是正则表达式模式。

下面将介绍如何使用 sed 从两个模式之间提取字符串。

语法

sed 命令的语法如下:

sed -n '/start_pattern/,/end_pattern/p' filename

其中:

  • -n 选项指定 sed 命令模式空间不自动输出
  • /start_pattern//end_pattern/ 是开始模式和结束模式,表示我们想要提取的字符串所在的位置
  • p 命令表示输出模式空间中的行(行必须匹配到 start_pattern 和 end_pattern之间)
示例

以一个 example.txt 文件为例,文件内容如下:

Hello world!
This is an example file.
I am line 3.
Please extract me.
I am line 5.
Thank you.

现在,我们想提取 Please extract me. 这一行。我们可以使用以下命令:

$ sed -n '/Please/,/me/p' example.txt
Please extract me.

这里,我们使用 /Please//me/ 作为开始和结束模式,-n 选项用于指定模式空间不自动输出,并使用 p 命令输出包含 Pleaseme 之间的文本行。

我们也可以使用正则表达式作为开始模式和结束模式。例如,如果我们想提取第三行,那么可以使用以下命令:

$ sed -n '/line 3./,/[0-9]/p' example.txt
I am line 3.
Please extract me.

这个命令中,开始模式是 /line 3./(句点表示除了换行符以外的任何字符),结束模式是 /[0-9]/,表示包含数字的任何行。

结论

sed 是一种非常有用的工具,可以帮助我们在文本中快速查找和提取特定字符串。在使用 sed 命令时,我们可以使用两个模式之间来定位并提取特定的文本行。我们可以使用普通字符、正则表达式或其他模式来作为我们的开始模式和结束模式。