我有一个配置文件,里面有gitlab令牌,其中有两个不同的令牌值,是否有一种方法可以在单个bash脚本命令中获取该值,请单行命令来获取令牌。
concurrent = 10
check_interval = 0
[session_server]
session_timeout = 1800
[[runners]]
name = "gitlab"
limit = 13
url = "gitlab url"
token = "xxxxxxxxxxxxx"
executor = "docker+machine"
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = true
shm_size = 0
[runners.machine]
IdleCount = 0
IdleTime = 300
MaxBuilds = 600
MachineDriver = "amazonec2"
MachineName = "gitlab-docker-machine-%s"
OffPeakPeriods = ["* * 0-9,17-23 * * mon-fri *", "* * * * * sat,sun *"]
OffPeakTimezone = "Europe/London"
OffPeakIdleCount = 0
OffPeakIdleTime = 30
[[runners]]
name = "gitlab"
limit = 11
url = "gitlab url"
token = "yyyyyyyyyyyyyyyyyyy"
executor = "docker+machine"
[runners.docker]
tls_verify = false
image = "docker:stable"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = true
shm_size = 0
答案 0 :(得分:1)
您可以使用grep隔离包含令牌的行:
cat test | grep token'
如果您只想要令牌本身而没有“ token =“,请添加awk:
cat test | grep token | awk '{print $3}'
如果您只想获取令牌的字符串,而没有“”字符,请添加tr:
cat test | grep token | awk '{print $3}' | tr -d \"
答案 1 :(得分:1)
这可以使用更通用的方式在单个strlen(a) + strlen(b) + 1
中完成。我在这里添加了一个名为awk
的变量,我们可以在其中提及要打印的出现值。
occur
在这种情况下,它将仅打印行令牌第二个字段(第二次出现)的值。
一个人可以更改awk -v occur="2" -F' = ' '/token/{if(++count==occur){print}}' config.txt
的值并可以打印该行的令牌的值。
编辑: 为了使处理速度更快,我现在也在代码中添加了occur
,这将迫使awk程序退出尽快找到匹配的匹配字符串。
exit
答案 2 :(得分:0)
我认为可以使用以下命令。
awk -F' = ' '/token/ {print $2}' config.txt | sed -n 1p
OR
awk -F' = ' '/token/ {print $2}' config.txt | sed -n 2p
OR
awk -F' = ' '/token/ {print $2}' config.txt | awk 'NR==1'
OR
awk -F' = ' '/token/ {print $2}' config.txt | awk 'NR==2'