Regex 使用一个表达式进行正则表达式匹配

Regex 使用一个表达式进行正则表达式匹配,regex,shell,Regex,Shell,是否有一种方法可以使用一个正则表达式仅匹配前两行(不使用“或”匹配,如:^cmd$| ^cmd[[:space:]+) 单词cmdother可以是任何以cmd开头的单词 另外,谢谢大家的回答。它在上述情况下起作用。但是,如果有一条线,如: cmd-anything 它也被选中(似乎-是一个单词边界)。有解决方法吗?使用单词边界\b ^cmd\b.*$ 使用单词边界\b ^cmd\b.*$ 如果输入与您给出的完全相同,\b可以工作 ^cmd\b 只要检查开头,忽略结尾就行了 ^cmd\b

是否有一种方法可以使用一个正则表达式仅匹配前两行(不使用“或”匹配,如:
^cmd$| ^cmd[[:space:]+

单词
cmdother
可以是任何以
cmd
开头的单词

另外,谢谢大家的回答。它在上述情况下起作用。但是,如果有一条线,如:

cmd-anything

它也被选中(似乎
-
是一个单词边界)。有解决方法吗?

使用单词边界
\b

^cmd\b.*$

使用单词边界
\b

^cmd\b.*$

如果输入与您给出的完全相同,
\b
可以工作

^cmd\b
只要检查开头,忽略结尾就行了

^cmd\b
但是,
\b
不仅匹配空格,
:,.?…
也会匹配。例如,将匹配行
cmd:foo、cmd.foo…

如果他们不关心,只需使用
\b
一个,否则,您确实需要
(或)像:


BRE:
^cmd\(.\\$)

如果输入与您给出的完全相同,
\b
可以工作

^cmd\b
只要检查开头,忽略结尾就行了

^cmd\b
但是,
\b
不仅匹配空格,
:,.?…
也会匹配。例如,将匹配行
cmd:foo、cmd.foo…

如果他们不关心,只需使用
\b
一个,否则,您确实需要
(或)像:


BRE:
^cmd\(.\\$)

您可以抛弃正则表达式并像这样使用awk:

awk '$1 == "cmd"' file
cmd
cmd -option

您可以抛弃正则表达式并像这样使用awk:

awk '$1 == "cmd"' file
cmd
cmd -option

您使用什么命令来匹配?是不是
grep
?从字面上讲
-
不是一个词的边界,
d
-
之间的点就是词的边界。不,没有“修复”,“单词字符”是字母、数字和下划线。你用什么命令来匹配?是不是
grep
?从字面上讲
-
不是一个词的边界,
d
-
之间的点就是词的边界。不,没有“修复”,单词字符是字母、数字和下划线。您可以使用
^cmd([[:blank:].$)
您可以使用
^cmd([[:blank:].$)