gpt4 book ai didi

regex - 如何在 shell 脚本中将正则表达式用于多行模式

转载 作者:行者123 更新时间:2023-11-29 09:30:27 26 4
gpt4 key购买 nike

我想编写一个 bash 脚本,用于在跨多行的 html 文件中查找模式。

正则表达式文件:

<td class="content">
some content
</td>
<td class="time">
13.05.2013 17:51
</td>
<td class="author">
A Name
</td>

现在我想找到<td>的内容- 带有 class="time" 的标签.

所以原则上是以下正则表达式:

<td class="time">(\d{2}\.\d{2}\.\d{4}\s+\d{2}:\d{2})</td>

grep似乎不是我可以使用的命令,因为...

  1. 它只返回完整的行或使用 -o 的完整结果不仅是圆括号内的结果 (...) .
  2. 它只在一行中寻找一个模式

那么我怎么可能只得到一个带有13.05.2013 17:51的字符串呢? ?

最佳答案

它不完全在那里,它出于某种原因打印了一个领先的换行符,但也许是这样的?

$ sed -n '/<td class="time">/,/<\/td>/{s/^<td class="time">$//;/^<\/td>$/d;p}' file 

13.05.2013 17:51

灵感来自 https://stackoverflow.com/a/13023643/1076493

编辑:好吧,perl 总是存在的!
有关详细信息,请参阅 https://stackoverflow.com/a/1213996/1076493

$ perl -0777 -ne 'print "$1\n" while /<td class="time">\n  (.*?)\n<\/td>/gs' regex.txt 
13.05.2013 17:51

关于regex - 如何在 shell 脚本中将正则表达式用于多行模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18808240/

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