有没有办法只使用一个正则表达式匹配前两行(不使用“或”匹配如:^cmd$|^cmd[[:space:]]+
)?
cmd
cmd -option
cmdanother
cmdanother -option
单词cmdanother
可以是以cmd
开头的任何内容。
P.S。,谢谢大家的回答。它适用于上述情况。但是,如果有一行如下:
cmd-anything
它也被选中(似乎-
是一个单词边界)。有没有解决这个问题?
答案 0 :(得分:3)
如果输入与您给出的完全相同,\b
可以正常工作。
^cmd\b
只是检查开头并忽略结尾应该有效。
但是,\b
不仅匹配空格,:,.?...
也会匹配。例如,cmd:foo, cmd.foo ...
行将匹配。
如果他们不关心,只需选择\b
,否则,您需要|
(或)喜欢:
^cmd( .*|$)
BRE:^cmd\( .*\|$\)
答案 1 :(得分:1)
你可以抛弃正则表达式并像这样使用awk:
awk '$1 == "cmd"' file
cmd
cmd -option
答案 2 :(得分:0)