2016-09-08 42 views
0

我有這個在我的bash腳本:如何在匹配分隔符後獲取特定文本?

CONFIG=$(docker inspect "${CONTAINER}" | jq '.[0].Config.Env') 

CONFIG現在看起來是這樣的(作爲一個字符串):

[ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "site_title=Example", "[email protected]", "site_url=www.test.com" ] 

我想是讓site_url所以我嘗試:

cut -d "site_url=" -f 2 <<< "${CONFIG}" 

但與cut我只能設置一個字符分隔符。

我怎樣才能實現我越來越www.test.com"site_url=www.test.com"

+0

嘗試用awk,而不是削減。 – dood

回答

1

可你只是再次使用jq的目標是什麼?

SITE_URL=$(echo $CONFIG | jq -r '.[1]' | cut -f2- -d=) 
0

您可以使用grep -ocut

grep -o 'site_url=[^"]*' <<< "$CONFIG" | cut -d= -f2 
www.test.com 
1

使用awk分割功能於行分成兩個部分,然後提取所需要的。

awk '{split($0,a,"site_url="); gsub(/]|\"/,"", a[2]) ;print a[2]}' 
+0

認爲你可以使用awk簡化它,而不使用任何內置函數。 – dood

1

試試這個:

echo [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "site_title=Example", "[email protected]", "site_url=www.test.com" ] | awk -F",|=|]" '{ print $8 } ' 

或者你的情況簡單地說:

echo ${CONFIG} | awk -F",|=|]" '{ print $8 } ' 
相關問題