grep
PCRE ( -P
) 와 함께 사용할 수 있습니다 .
grep -Po 'spring.profiles.active=\K[^ ]+' <<<'.....string.....'
spring.profiles.active=
이 하위 문자열을 문자 그대로 \K
일치시키고 일치를 버립니다.
[^ ]+
spring.profiles.active=
다음 부분 까지 원하는 부분, 즉 이후 부분을 선택합니다.
파일의 경우 :
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이 비어 있는지 테스트 할 수 있습니다.