Regex grep命令始终包含具有匹配输出的html标记
这是一个奇怪的问题 我在html标记之间有一个单词列表,每个标记之间用一行分隔,左侧有一些空格,如下所示:Regex grep命令始终包含具有匹配输出的html标记,regex,bash,grep,Regex,Bash,Grep,这是一个奇怪的问题 我在html标记之间有一个单词列表,每个标记之间用一行分隔,左侧有一些空格,如下所示: <td>word</td> <td>anotherWord</td> ... .... | egrep 'hanai') 只是为了澄清,“temp”是要搜索的输入。(我在bash脚本中执行此操作,并将输入存储在变量temp中)。“…”是一个字符列表,因为我试图提取的单词只使用某些字符 每当grep找到匹配项时,它就
<td>word</td>
<td>anotherWord</td>
...
.... | egrep 'hanai')
只是为了澄清,“temp”是要搜索的输入。(我在bash脚本中执行此操作,并将输入存储在变量temp中)。“…”是一个字符列表,因为我试图提取的单词只使用某些字符
每当grep找到匹配项时,它就会输出单词以及两边的html标记!这只发生在匹配的情况下,因为我通过让regex参数乱七八糟来测试它,比如“09680876”-它在temp文件中没有匹配项,grep没有输出任何内容
我还尝试使用一个我知道匹配的特定单词作为regex参数,如下所示:
<td>word</td>
<td>anotherWord</td>
...
.... | egrep 'hanai')
我知道“hanai”在示例文本中是一个明确的匹配项。这导致grep输出
<td>hanai</td>
hanai
我完全被难住了,无法在网上找到解决方案。如果有人指出我犯的明显错误,我将不胜感激。默认情况下
grep
(和egrep
)输出包含匹配模式的行。如果只需要匹配的图案,请使用-o
标志
从人工白鹭
:
默认情况下,
grep
(和egrep
)输出包含匹配模式的行。如果只需要匹配的图案,请使用-o
标志
从人工白鹭
:
根据这里的介绍,在grep(和egrep)中使用扩展模式和perl模式。您必须使用一个正则表达式,该表达式只返回匹配的组(标记的文本),如下所示(未测试):
grep-oP'\K\[^根据此处以及在grep(和egrep)中使用扩展模式和perl模式。您必须使用正则表达式,该正则表达式仅返回匹配的组(标记的文本)如下(未测试):
grep-oP'\K\[^egrep
已被弃用。请改用grep-E
。egrep
已被弃用。请改用grep-E
。
grep -oP '<[a-zA-Z]+> \K\[^<]+' test.txt