Vous pouvez utiliser grep
avec PCRE ( -P
):
grep -Po 'spring.profiles.active=\K[^ ]+' <<<'.....string.....'
spring.profiles.active=
correspondra littéralement à cette sous-chaîne, \K
supprimera la correspondance
[^ ]+
sélectionnera la portion souhaitée, c'est-à-dire la portion suivante spring.profiles.active=
, jusqu'à l'espace suivant
Pour un fichier:
grep -Po 'spring.profiles.active=\K[^ ]+' file.txt
Exemple:
% 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
prendrait une logique similaire:
sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'.....string.....'
Exemple:
% 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
Gestion des erreurs:
Dans votre script, vous voudrez peut-être gérer le cas où il n'y a pas de correspondance, en d'autres termes où votre chaîne d'origine ne contient pas spring.profiles.active=
. Dans l' sed
exemple ci-dessus , vous obtenez toute la chaîne d'origine, ce qui pourrait créer des problèmes:
% 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
Si vous préférez obtenir la chaîne vide lorsqu'il n'y a aucune correspondance, ajoutez l' -n
option à la sed
commande et l' p
option à la sed
s
commande, comme ceci:
% 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
Ensuite, vous pouvez tester si $ var est vide ou non.