Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex grep命令始终包含具有匹配输出的html标记_Regex_Bash_Grep - Fatal编程技术网

Regex grep命令始终包含具有匹配输出的html标记

Regex grep命令始终包含具有匹配输出的html标记,regex,bash,grep,Regex,Bash,Grep,这是一个奇怪的问题 我在html标记之间有一个单词列表,每个标记之间用一行分隔,左侧有一些空格,如下所示: <td>word</td> <td>anotherWord</td> ... .... | egrep 'hanai') 只是为了澄清,“temp”是要搜索的输入。(我在bash脚本中执行此操作,并将输入存储在变量temp中)。“…”是一个字符列表,因为我试图提取的单词只使用某些字符 每当grep找到匹配项时,它就

这是一个奇怪的问题

我在html标记之间有一个单词列表,每个标记之间用一行分隔,左侧有一些空格,如下所示:

    <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