2

我必须逐行读取的 html 文件。然后我需要运行一个与 span 标签的某些类属性匹配的脚本,然后返回包含 span 的文本和它所在的行号。

以下是我的 .html 文件的单行代码:

<span id="L9_454" class="e"><span class="ln">454</span><span class="bar"></span>                      <span class="k">if</span> ( (strncmp(<span class="fm" value="2705">p_rout</span>-&gt;<span class="fm" value="186">source_corresp</span>.<span class="fm" value="105">name</span>, <span class="fm" value="5190">IL_LOWERING_INIT_ROUTINE_PREFIX</span>, strlen(<span class="fm" value="5190">IL_LOWERING_INIT_ROUTINE_PREFIX</span>)) == 0) </span>

我需要在每一行上运行脚本并搜索是否为任何 span 标签设置了 class="fm" 然后我需要转储上面示例中的第 454 行和具有 span class="fm" 即 p_rout,source_corresp 的文本.xml 文件中的名称、IL_LOWERING_INIT_ROUTINE_PREFIX 和 IL_LOWERING_INIT_ROUTINE_PREFIX。

我知道如何转储数据,但我只是不知道如何获得所需的文本。我使用 awk 尝试过,但不知道我应该匹配什么正则表达式。任何其他过滤器也可以工作。请帮忙

4

1 回答 1

3
awk '$1 ~ /fm/ {print $2}' RS=span FS='[<>]'
  • 将记录分隔符设置为span
  • 将字段分隔符设置为<>
  • 如果字段一包含fm打印字段二

结果

p_rout
source_corresp
姓名
IL_LOWERING_INIT_ROUTINE_PREFIX
IL_LOWERING_INIT_ROUTINE_PREFIX
于 2013-06-18T05:11:41.680 回答