如何使用 grep 命令提取 html 中标签之间的内容
How to extract content between tags in html using grep command
我想写一个 grep 命令来提取 h1 标签之间的内容,而不考虑 class 和其他属性
我试过了
grep -o '>.*</h1>' Email.txt
但是只给了三个元素
使用 GNU grep
,您可以使用
grep -oP '<h1(?:\s[^>]*)?>\K.*?(?=</h1>)' Email.txt
-P
选项将启用 PCRE 正则表达式引擎并且模式将匹配
<h1
- <h1
字符串
(?:\s[^>]*)?
- 一个可选的非捕获组,匹配 1 次或 0 次出现的空格 (\s
),后跟 >
以外的 0+ 个字符
>
- 一个 >
字符
\K
- 匹配重置运算符,丢弃匹配内存缓冲区中到目前为止匹配的文本
.*?
- 除换行字符外的任何 0+ 个字符,尽可能少
(?=</h1>)
- 匹配紧跟 </h1>
子字符串的位置的正向前瞻。
我想写一个 grep 命令来提取 h1 标签之间的内容,而不考虑 class 和其他属性
我试过了
grep -o '>.*</h1>' Email.txt
但是只给了三个元素
使用 GNU grep
,您可以使用
grep -oP '<h1(?:\s[^>]*)?>\K.*?(?=</h1>)' Email.txt
-P
选项将启用 PCRE 正则表达式引擎并且模式将匹配
<h1
-<h1
字符串(?:\s[^>]*)?
- 一个可选的非捕获组,匹配 1 次或 0 次出现的空格 (\s
),后跟>
以外的 0+ 个字符
>
- 一个>
字符\K
- 匹配重置运算符,丢弃匹配内存缓冲区中到目前为止匹配的文本.*?
- 除换行字符外的任何 0+ 个字符,尽可能少(?=</h1>)
- 匹配紧跟</h1>
子字符串的位置的正向前瞻。