2016-09-08 9 views
0

私はbashスクリプトでこれを持っている:デリミタにマッチした後に特定のテキストを取得するにはどうすればよいですか?

[ "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を取得することです、私が試した:

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

CONFIG今(文字列として)次のようになります

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

しかし、cutでは1文字の区切り文字しか設定できません。

どのように私はあなただけで再びjqを使用することはでき"site_url=www.test.com"

+0

ではなく、カットのawkを使用してみてください。 – dood

答えて

1

からwww.test.comを得るための私の目標を達成することができますか?

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

あなたはcutgrep -oを使用することができます。

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 } ' 
関連する問題