有一个
-z
GNU GREP的选项
\s
匹配输入中的换行符,例如:
cat tt_news_history | grep -z '<tr>\s*<td'
信息文档中的相关片段:
__-Z___--空数据_
将输入和输出数据视为行序列,每个行都终止
以零字节(ASCII NUL字符)代替换行符。
与__-Z_或__--null_选项类似,此选项可用于
__sort-z_秷等命令处理任意文件名。
(…)
-
我怎样才能跨行匹配?
标准grep不能这样做,因为它基本上是基于行的。
因此,仅使用_[:space:]__秷字符类不匹配
以您可能期望的方式换行。
使用GNU__grep_____-Z__-空数据__,每个输入__line__为
以空字节结尾;*注意其他选项::。因此,您可以匹配
输入中的换行符,但通常如果有匹配项,
输入是输出,因此这种用法通常与
输出抑制选项,例如:
printf'foo\n bar\n'grep-z-q'foo[:space:]]+bar'
如果这还不够,可以在给出输入之前对其进行转换。
到__grep_,或转到__awk_、__sed_、__perl_,或许多其他实用程序
设计用于跨线路运行的。