繁体   English   中英

如何使用grep排除正则表达式的一部分

[英]How to exclude part of regexp with grep

您好,假设您从“ some_command”获得以下输出:

DEPENDENCY archy@0.0.2
DEPENDENCY bower-config@~0.5.2
DEPENDENCY bower-endpoint-parser@~0.2.2
DEPENDENCY bower-json@~0.4.0
DEPENDENCY bower-logger@~0.2.2
DEPENDENCY bower-registry-client@~0.2.0
DEPENDENCY cardinal@0.4.0
DEPENDENCY chalk@0.5.0
DEPENDENCY chmodr@0.1.0
DEPENDENCY decompress-zip@0.0.8
DEPENDENCY fstream@~1.0.2
DEPENDENCY fstream-ignore@~1.0.1
DEPENDENCY glob@~4.0.2
DEPENDENCY graceful-fs@~3.0.1
DEPENDENCY handlebars@~2.0.0
DEPENDENCY inquirer@0.7.1
DEPENDENCY insight@0.4.3
DEPENDENCY is-root@~1.0.0
DEPENDENCY junk@~1.0.0
DEPENDENCY lockfile@~1.0.0
DEPENDENCY lru-cache@~2.5.0
DEPENDENCY mkdirp@0.5.0
DEPENDENCY mkdirp@^0.5.0
DEPENDENCY chalk@^0.5.0
DEPENDENCY graceful-fs@~3.0.1
DEPENDENCY mkdirp@~0.5.0
DEPENDENCY mkdirp@^0.5.0

我要做的是获取库名称,包括不带“ DEPENDENCY”部分的版本。 我正在使用:

> some_command | grep -ioE '(?:dependency )(.+)'

非捕获组应该忽略“依赖性”部分,但事实并非如此。

我究竟做错了什么? (我在Mac OS X优胜美地上)

#编辑

如果有人可能从解决类似的Mac OS X grep问题中受益,请选择以下链接: http : //www.heystephenwood.com/2013/09/install-gnu-grep-on-mac-osx.html

非捕获组在grep不可用。 您可以做的是将Perl正则表达式中的-P与后面的代码一起使用:

grep -Pio '(?<=dependency )(.+)'

使用输入对文件执行该命令,它将返回:

archy@0.0.2
bower-config@~0.5.2
bower-endpoint-parser@~0.2.2
bower-json@~0.4.0
bower-logger@~0.2.2
...

由于您没有-P ,因此可以使用以下任何一种方法(以及其他方法!):

sed '/^DEPENDENCY/s/^DEPENDENCY //'
awk '/^DEPENDENCY/ {print $2}'

如果一行以该字符串开头,则它们始终是打印DEPENDENCY之后的内容。

非捕获部没有忽视对手,我只是不包括从比赛组。您可以使用向后看。与P开关

some_command | grep -ioP '(?<=dependency )(.+)'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM