两种模式之间的Sed提取物首先匹配

时间:2017-07-05 06:33:35

标签: string design-patterns sed find between

(Xubuntu 16.04.2 x86_64) 我试图解析一个html文件并从中获取值。我需要在这个

之间提取的所有代码
<tr style="text-align: center; background:#FFF">

和这个

</td></tr>

问题是,我是通过一个循环来运行它来抓取这些部分中的800个,但是第一次运行它会正确找到第一个字符串,但它使用文件中的最后一个匹配而不是下一个第一个字符串。

我将每个查找输出到一个文本文件中,第一个结合了我不需要的每个条目,我需要为每个条目提供单独的文件。

不要使用那个复杂的字符串,而是说我有这个html

<div>
  Index
  Index
  Index
</div>
<div>
  Index
  Index
  Index
</div>
<div>
  Index
  Index
  Index
</div>

我正在使用此代码

sed 1,/<div>/,/<\/div>/!d' sourcefile > output

但是该命令会给出整个文件,而不是选择</div>.

的第一个匹配项

如果可能的话,我宁愿使用sed而不是awk,grep或perl。

1 个答案:

答案 0 :(得分:0)

如果你坚持$( document ).ready(function() { if (document.location.hash === "#showAlert") $(".alert.is-hidden").removeClass("is-hidden"); } ,这应该可以解决问题(如果我理解你的问题):

sed

由于POSIX ERE(扩展正则表达式)总是贪婪,因此地址范围sed -n '/<div>/,/<\/div>/ { /<\/*div>/d; p }' file 将始终捕获连续的/<div>/,/<\/div>/ s。我们在这些块上运行的命令只删除(外部)div<div>;打印出其他所有内容。

输入</div>

file

输出是:

a
<div>
    1
</div>
b
<div>
    2
</div>
c
<div>
    3
</div>
d