grep
PCRE(-P
)で使用できます:
grep -Po 'spring.profiles.active=\K[^ ]+' <<<'.....string.....'
ファイルの場合:
grep -Po 'spring.profiles.active=\K[^ ]+' file.txt
例:
% grep -Po 'spring.profiles.active=\K[^ ]+' <<<'00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -Dspring.profiles.active=qa -XX:MaxPermSize=256'
qa
sed
同様のロジックを使用します:
sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'.....string.....'
例:
% sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -Dspring.profiles.active=qa -XX:MaxPermSize=256'
qa
エラーの処理:
スクリプトでは、一致しない場合、つまり元の文字列にが含まれていない場合を処理できますspring.profiles.active=
。上記のsed
例では、元の文字列全体を取得するため、問題が発生する可能性があります。
% var="$(sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -XX:MaxPermSize=256')"
% echo $var
00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -XX:MaxPermSize=256
あなたが一致しないとき、空の文字列を取得する場合は、追加-n
のオプションをsed
コマンドとp
するオプションsed
s
のように、コマンドを実行します。
% var="$(sed -rn 's/.*spring.profiles.active=([^ ]+).*/\1/p' <<<'00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -XX:MaxPermSize=256')"
% echo $var
% var="$(sed -rn 's/.*spring.profiles.active=([^ ]+).*/\1/p' <<<'00:28:04 /usr/lib/jvm/jre/bin/java -DJDBC_CONNECTION_STRING= -Dspring.profiles.active=qa -XX:MaxPermSize=256')"
% echo $var
qa
次に、$ varが空かどうかをテストできます。