grep
PCRE ( -P
) ile kullanabilirsiniz :
grep -Po 'spring.profiles.active=\K[^ ]+' <<<'.....string.....'
spring.profiles.active=
bu alt dizeyi tam anlamıyla \K
eşleştirecek, eşleşmeyi silecek
[^ ]+
istenen bölümü, yani spring.profiles.active=
sonraki boşluğa kadar olan bölümü seçecektir
Bir dosya için:
grep -Po 'spring.profiles.active=\K[^ ]+' file.txt
Misal:
% 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
benzer bir mantık alır:
sed -r 's/.*spring.profiles.active=([^ ]+).*/\1/' <<<'.....string.....'
Misal:
% 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
Kullanım hataları:
Senaryonuzda eşleşmenin olmadığı, diğer bir deyişle orijinal dizenizin bulunmadığı durumu ele almak isteyebilirsiniz spring.profiles.active=
. Yukarıdaki sed
örnekte, sorun yaratabilecek orijinal dizenin tamamını elde edersiniz:
% 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
Eğer eşleşme yoktur boş dize elde etmek isterseniz, ekleme -n
seçeneği sed
komutu ve p
seçeneğine sed
s
böyle komutu:
% 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
Sonra $ var'ın boş olup olmadığını test edebilirsiniz.