Sie können grep
mit PCRE ( -P
) Folgendes verwenden :
grep -Po 'spring.profiles.active=\K[^ ]+' <<<'.....string.....'
spring.profiles.active=
wird buchstäblich mit diesem Teilstring übereinstimmen, \K
wird die Übereinstimmung verwerfen
[^ ]+
wählt die gewünschte Portion aus, dh die Portion danach spring.profiles.active=
, bis zum nächsten Leerzeichen
Für eine Datei:
grep -Po 'spring.profiles.active=\K[^ ]+' file.txt
Beispiel:
% 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
würde eine ähnliche Logik annehmen:
sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'.....string.....'
Beispiel:
% 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
Fehlerbehandlung:
In Ihrem Skript möchten Sie möglicherweise den Fall behandeln, in dem es keine Übereinstimmung gibt, dh in dem Ihre ursprüngliche Zeichenfolge keine enthält spring.profiles.active=
. Im obigen sed
Beispiel erhalten Sie die gesamte Originalzeichenfolge, was zu Problemen führen kann:
% 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
Wenn Sie die leere Zeichenfolge lieber abrufen möchten, wenn keine Übereinstimmung vorliegt, fügen Sie die -n
Option zum sed
Befehl und die p
Option zum sed
s
Befehl wie folgt hinzu :
% 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
Dann können Sie testen, ob $ var leer ist oder nicht.