使用 sed 提取两个字符串之间的文本

使用 sed 提取两个字符串之间的文本

我必须使用 AdaBrowse Html 生成器来创建一堆格式化文件。不幸的是,所有这些文件在每个函数或过程之前都包含标头,这些标头不遵循一致的格式形式。

-- Example 1 - new
--##################################################
-- Name: Example
-- Version: 1.0
-- Description: Shows Example
-- a 12-bit field containing the an example.
-- Inputs: AN_Example.
-- Outputs: None
-- Return Values: Examples
-- Callers:
--
-- Callees:
--
----------------------------------------------------------

-- Example 2 - new
--##################################################
-- Name: Example
-- Version: 1.0
-- Description: 
-- Shows More Examples
-- in a 12-bit field containing the an example.
-- 
-- Inputs: AN_Example.
-- Outputs: None
-- Return Values: Examples
-- Callers:
--
-- Callees:
--
----------------------------------------------------------

AdaBrowse 使用 sed 有一个非常好的格式化选项,但我无法让它仅提取从“--Description:”到(不包括)“--Inputs:”的行

我得到的最接近的是命令:

sed -r 's/.*(Description:[^Inputs:]*).*/\1/g

但它抓住了一切。我怎样才能提取上述行?

答案1

我没用过 AdaBrowse,但是

sed '/-- Description:/,/-- Inputs:/!d;/-- Inputs:/d'

适合你的例子,所以你可以尝试一下。

相关内容