如何使用 grep 查找 html 标签的值
How to use grep to find value of html tag
我想分析我网页的某些方面。例如,我想查看所有 alt 标签的值。对于示例,我创建了简单的 html 代码,其中包含很少的 alt 标记。假设代码中的标签是:
alt='Text-01'
alt='Text 02'
alt=''
alt='Some long text'
然后我尝试了命令:
grep -o "alt='*'" my-page.html
输出为:
alt='
alt='
alt=''
alt='
我期待看到像这样的输出:
Text-01
Text 02
empty line or alt=''
Some long text
或这个:
alt='Text-01'
alt='Text 02'
alt=''
alt='Some long text'
你能帮我实现吗?
如果你确定 alt 的参数在单引号之间,你可以做一个
grep -o "alt='[^']*'" file
这将搜索 alt=,然后是单引号,然后是任意数量的非单引号,最后是终止单引号。
您可以将 GNU grep
与 PCRE 正则表达式一起使用:
grep -oP "alt='(?:\K[^']+|')" file
参见regex demo。
它匹配:
alt='
- 文字子串
(?:\K[^']+|')
- 非捕获组匹配
\K[^']+
- \K
省略匹配的文本(以便仅获取属性值)并且 [^']+
匹配 '
[ 以外的一个或多个字符=41=]
|
- 或
'
- 单引号。
参见 online demo:
#!/bin/bash
s="alt='Text-01'
alt='Text 02'
alt=''
alt='Some long text'"
grep -oP "alt='(?:\K[^']+|')" <<< "$s"
输出:
Text-01
Text 02
alt=''
Some long text
我想分析我网页的某些方面。例如,我想查看所有 alt 标签的值。对于示例,我创建了简单的 html 代码,其中包含很少的 alt 标记。假设代码中的标签是:
alt='Text-01'
alt='Text 02'
alt=''
alt='Some long text'
然后我尝试了命令:
grep -o "alt='*'" my-page.html
输出为:
alt='
alt='
alt=''
alt='
我期待看到像这样的输出:
Text-01
Text 02
empty line or alt=''
Some long text
或这个:
alt='Text-01'
alt='Text 02'
alt=''
alt='Some long text'
你能帮我实现吗?
如果你确定 alt 的参数在单引号之间,你可以做一个
grep -o "alt='[^']*'" file
这将搜索 alt=,然后是单引号,然后是任意数量的非单引号,最后是终止单引号。
您可以将 GNU grep
与 PCRE 正则表达式一起使用:
grep -oP "alt='(?:\K[^']+|')" file
参见regex demo。
它匹配:
alt='
- 文字子串(?:\K[^']+|')
- 非捕获组匹配\K[^']+
-\K
省略匹配的文本(以便仅获取属性值)并且[^']+
匹配'
[ 以外的一个或多个字符=41=]|
- 或'
- 单引号。
参见 online demo:
#!/bin/bash
s="alt='Text-01'
alt='Text 02'
alt=''
alt='Some long text'"
grep -oP "alt='(?:\K[^']+|')" <<< "$s"
输出:
Text-01
Text 02
alt=''
Some long text