首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多捕捉组pcregrep

多捕捉组pcregrep
EN

Stack Overflow用户
提问于 2013-11-13 09:06:52
回答 1查看 3.4K关注 0票数 3

pcregrep中的-oX选项有问题。使用不同的数字指定多个这样的选项,只输出最后一个指定的捕获组。

数据:

docker ps | awk '{print $1}' | tail -n +2 | xargs docker inspect

产出:

代码语言:javascript
复制
[{
"ID": "4e7f430263c33c25970134760ea96f9b57452680a8cfdf062270f5f7fe385135",
.... #lots of additional lines
"Ports": {
        "5000/tcp": [
            {
                "HostIp": "127.0.0.1",
                "HostPort": "5000"
            }
        ],
        "5984/tcp": [
            {
                "HostIp": "127.0.0.1",
                "HostPort": "5984"
            }
        ]
    }
},{
#same as above, but with a different ID and HostPort 5000
}]

The Idea

docker ps | awk '{print $1}' | tail -n +2 | xargs docker inspect | pcregrep -M -o1 'ID":\s"(\w*)(?:\n|.)*?HostPort":\s"(\w)'

输出

代码语言:javascript
复制
4e7f430263c33c25970134760ea96f9b57452680a8cfdf062270f5f7fe385135
db35ce4b1fc7580ff43bacda5e961c4741c9447e97dbbdbf38218d068b0132af

docker ps | awk '{print $1}' | tail -n +2 | xargs docker inspect | pcregrep -M -o2 'ID":\s"(\w*)(?:\n|.)*?HostPort":\s"(\w*)'

输出

代码语言:javascript
复制
8000
5000

到目前一切尚好。现在我想把这些输出组合在等值线上。但是,pcregrep -M -o也输出中间组之间的所有内容(似乎忽略了中间组不是捕获组),而pcregrep -M -o1 -o2只输出第二个组--第二个选项似乎覆盖了第一个组。这是在Ubuntu12.04 LTS上。

知道怎么得到输出吗?

代码语言:javascript
复制
4e7f430263c33c25970134760ea96f9b57452680a8cfdf062270f5f7fe385135 8000
db35ce4b1fc7580ff43bacda5e961c4741c9447e97dbbdbf38218d068b0132af 5000

并且仍然保持“unixy”(最好没有perl/python/ruby脚本)?

背景:我想要自动停止集装箱在码头占用特定的港口。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-20 20:27:36

-o多次指定为pcregrep的功能似乎是最近的发展(版本8.32,2012年11月30日发布)。我猜你的发行版还没有这个。-)所以,使用awk代替。另外,用第一个tail脚本中的等效功能替换原始awk中多余的使用。

代码语言:javascript
复制
docker ps | awk '(NR >= 2) { print $1 }' | xargs docker inspect | awk '($1~/"ID":/){gsub("\"|,","",$2);id=$2}; (id && $1~/"HostPort":/) {gsub("\"","",$2);print id " " $2;id=""}'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19949566

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档