Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex仅使用egrep捕获整个单词_Regex_Linux_Shell_Unix_Grep - Fatal编程技术网

Regex仅使用egrep捕获整个单词

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上命中,但不命中

我正在使用egrep查看Performance NAS中的脚本

我正试图找到我们在哪里使用RCP和RSH……我的问题是1)我在REGEX很烂;2) 我在捡我不感兴趣的垃圾。例如,如果一个文件有strcpy.这个词,它将在RCP.上拾取,或者在RSH上单击ownership

显然,我对这些不感兴趣,但我不想排除基于单词ownership或strcpy的行…因为它们可能会结合使用…而且它不是一个完整的列表

这是我的正则表达式

 '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