用grep搜索开头和结尾的单词

kal*_*kal 12 regex grep

如何grep以字符开头和结尾的东西

ABC-0
ABC-1
ABC-10
ABC-20
Run Code Online (Sandbox Code Playgroud)

我想要为ABC-0和ABC-1 grep -v

Joã*_*ela 10

如果您尝试匹配单词使用\b作为单词分隔符,如下所示:

\ B [A-ZA-Z] - \d +\b

这个参考:

\b- 如果字符串中的第一个和/或最后一个字符匹配,则在字符(任何匹配的字符\w)和非字符(任何与[^\w]或匹配的内容)之间的位置 匹配,\W以及在字符串的开头和/或结尾处匹配是字符.

  • 虽然你可以使用"grep -P"在某些版本的grep中获得PCRE行为,但是\ b是错误的并且行为不可靠; 特别是,它不会将制表符检测为单词边界字符(在GNU grep 2.6.3中打破'\ b/www \n').如果这个工作,这将是最好的答案(我希望它确实有效!)! (2认同)

Jon*_*eet 9

目前尚不清楚你的意思.如果你想在开头有一个字符,在结尾有两位数,你可以使用

^[A-Za-z].*\d\d$
Run Code Online (Sandbox Code Playgroud)

如果您只想要一个连字符,然后只需一个数字,请使用:

^[A-Za-z].*-\d$
Run Code Online (Sandbox Code Playgroud)

如果您不关心有多少位数(一个或多个),但必须有连字符,请使用:

^[A-Za-z].*-\d+$
Run Code Online (Sandbox Code Playgroud)

如果这些都不是您想要的,请提供更多信息......您的问题的第一句话与其余部分并不完全吻合.


tue*_*ist 5

对于你的例子

egrep -v "^(ABC)-(0|1)$"
Run Code Online (Sandbox Code Playgroud)

是答案。对于常见情况,请查看 Jon 的回答

^标志着模式的开始,$结束。|方法or