Puede usar grep
con PCRE ( -P
):
grep -Po 'spring.profiles.active=\K[^ ]+' <<<'.....string.....'
spring.profiles.active=
coincidirá con esta subcadena literalmente, \K
descartará la coincidencia
[^ ]+
seleccionará la porción deseada, es decir, la porción posterior spring.profiles.active=
, hasta el siguiente espacio
Para un archivo:
grep -Po 'spring.profiles.active=\K[^ ]+' file.txt
Ejemplo:
% 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
tomaría una lógica similar:
sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'.....string.....'
Ejemplo:
% 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
Errores de manejo:
En su secuencia de comandos, es posible que desee manejar el caso donde no hay coincidencia, en otras palabras, donde su cadena original no contiene spring.profiles.active=
. En el sed
ejemplo anterior , obtiene la cadena original completa, lo que podría crear problemas:
% 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 prefiere obtener la cadena vacía cuando no hay coincidencia, agregue la -n
opción al sed
comando y la p
opción al sed
s
comando, así:
% 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
Luego puede probar si $ var está vacío o no.