Regex仅使用egrep捕获整个单词
我正在使用egrep查看Performance NAS中的脚本 我正试图找到我们在哪里使用RCP和RSH……我的问题是1)我在REGEX很烂;2) 我在捡我不感兴趣的垃圾。例如,如果一个文件有strcpy.这个词,它将在RCP.上拾取,或者在RSH上单击ownership 显然,我对这些不感兴趣,但我不想排除基于单词ownership或strcpy的行…因为它们可能会结合使用…而且它不是一个完整的列表 这是我的正则表达式Regex仅使用egrep捕获整个单词,regex,linux,shell,unix,grep,Regex,Linux,Shell,Unix,Grep,我正在使用egrep查看Performance NAS中的脚本 我正试图找到我们在哪里使用RCP和RSH……我的问题是1)我在REGEX很烂;2) 我在捡我不感兴趣的垃圾。例如,如果一个文件有strcpy.这个词,它将在RCP.上拾取,或者在RSH上单击ownership 显然,我对这些不感兴趣,但我不想排除基于单词ownership或strcpy的行…因为它们可能会结合使用…而且它不是一个完整的列表 这是我的正则表达式 'ftp|rcp|rsh' 如何将这些修改为在FTP上命中,但不命中
'ftp|rcp|rsh'
如何将这些修改为在FTP上命中,但不命中SFTP…rcp但不命中strcpy,rsh但不命中所有权…等等
所以我想要匹配的东西
ftp
`ftp`
/ftp/
"PUNCT"FTP"PUNCT"
也许你需要这样的东西:
\b
<-这是word的边框
\b模式\b
有几个元字符:
单词边界\b
字尾\
所以,一个可能的正则表达式是:
\
或者只是egrep-w'ftp | rsh | rcp'
@tripleee:你应该回答这个问题。@tripleee-w只在linux grephmmm上可用……这正是我所要求的……但后来我意识到可能有不同的问题。如果rcp被称为/usr/bin/rcp…那么也许我可以用两边都允许标点的单词边框来做这件事?这有什么问题吗<代码>'[^a-zA-Z0-9]\bftp\b[^a-zA-Z0-9]|[^a-zA-Z0-9]\brcp\b[^a-zA-Z0-9]|[^a-zA-Z0-9]\brsh\b[^a-zA-Z0-9]。@nitrobass24:\b
在这种情况下也有效。试试看。你不需要所有这些否定的字符类。所以它可以在linux上工作,但不能在HP上工作……regex不同吗?我想它应该是POSIX兼容的。所以这正是我想要的。我要是早点注意到第二个答案就好了。我已经测试过了,它可以在Linux和Solaris上运行……但不能在HP-UX上运行。您知道HP上的regexp有什么不同吗?它们很可能是GNU扩展。虽然我在grep
的信息页面中找不到它。您是否按照评论中的建议尝试了-w
?