【发布时间】:2017-10-26 00:45:30
【问题描述】:
我正在尝试获取仅包含 gitlab 跑步者姓名的列表。
所以gitlab-runner list 2>&1的输出是:
Listing configured runners ConfigFile=/etc/gitlab-runner/config.toml
default_runner Executor=shell Token=251cda361f983e612b27381e2f73ad URL=http://10.6.20.230
test runner Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230
请注意,跑步者的名字中可以包含空格。
所以我尝试了以下方法:
gitlab-runner list 2>&1 | awk -F'Executor' '{if(NR>1)print $1}' 这给了我几乎想要的东西(除了我需要删除的尾随空格)。
default_runner
test runner
但是,如果我将字段分隔符更改为 Executor= 以使其更明确,则它不再有效。它返回整行。
$ gitlab-runner list 2>&1 | awk -F'Executor=' '{if(NR>1)print $1}'
default_runner Executor=shell Token=251cda361f983e612b27381e2f73ad URL=http://10.6.20.230
test runner Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230
我尝试使用Executor\= 转义它,但无济于事。如何在拆分中包含等号?
编辑:
如果我将其中一条线回显到 awk 中,它会起作用
$ echo "test runner Executor=shell Token=86ab70918fc87c8a8d3a57c21457fb URL=http://10.6.20.230" | awk -F'Executor=' '{print $1}'
test runner
要注意的另一件事是,无论出于何种原因,gitlab-runner list 都会打印到 stderr。这就是为什么我在管道到 awk 之前重定向到标准输出。也许我没有正确重定向?但这并没有真正的意义,因为 awk 在没有等号的情况下拾取它。
【问题讨论】:
-
您使用什么版本的
awk?是gawk,是4.1.2之前的吗? -
@randomir GNU Awk 4.0.2
-
感谢您的编辑,我想我找到了问题所在。检查下面。
标签: bash awk gitlab-ci-runner