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:].$)