gpt4 book ai didi

html - awk 多行非贪婪匹配解决方法

转载 作者:行者123 更新时间:2023-12-04 11:49:42 24 4
gpt4 key购买 nike

我正在尝试使用 awk 提取 HTML 列表的内容。
一些列表条目是多行的。
示例输入列表:

<ul>
<li>
<b>2021-07-21:</b> Lorem ipsum
</li>
<li>
<b>2021-07-19:</b> Lorem ipsum
</li>
<li><b>2021-07-10:</b> Lorem ipsum</li>
</ul>
我正在使用的命令:
awk -v RS="" '{match($0, /<li>(.+)<\/li>/, entry); print entry[1]}' file.html
电流输出:
        <b>2021-07-21:</b> Lorem ipsum 
</li>
<li>
<b>2021-07-19:</b> Lorem ipsum
</li>
<li><b>2021-07-10:</b> Lorem ipsum
期望的输出:
        <b>2021-07-21:</b> Lorem ipsum 
<b>2021-07-19:</b> Lorem ipsum
<b>2021-07-10:</b> Lorem ipsum

我知道问题是因为列表条目没有用空行分隔。
我想过使用非贪婪匹配,但显然 awk 不支持它。
有可能的解决方法吗?

最佳答案

使用用于多字符 RS 的 GNU awk 和 \s [[:space:]] 的简写:

$ awk -v RS='\\s*</?li>\\s*' '!(NR%2)' file
<b>2021-07-21:</b> Lorem ipsum
<b>2021-07-19:</b> Lorem ipsum
<b>2021-07-10:</b> Lorem ipsum
我假设您要么真的不希望在您的问题的预期输出中显示前导空白,要么您不在乎它是否存在。

关于html - awk 多行非贪婪匹配解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68511098/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com