Eu usaria cut -d: -f2-
para isso:
echo " llap_java_opts : -XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts" | cut -d: -f2-
Como imprimir do separador de campo ":" até o final da linha
exemplo:
echo " llap_java_opts : -XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts"
llap_java_opts : -XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts
resultado esperado:
-XX:+AlwaysPreTouch {% if java_version > 7 %}-XX:+UseG1GC -XX:TLABSize=8m -XX:+ResizeTLAB -XX:+UseNUMA -XX:+AggressiveOpts
Passe por
sed 's/^[^:]*: *//'
Esta substituição de sed
excluirá tudo, desde o início da linha até e incluindo o primeiro :
e todos os espaços após ele.
Se você tiver a string em uma variável de shell $a
then
printf -- '-%s\n' "${a#*-}"
Isso usa a expansão do parâmetro ${parameter#word}
para excluir tudo até e incluindo o primeiro -
. O traço é inserido novamente pelo printf
. Isso não usa nenhum utilitário externo quando executado na maioria dos shells modernos.
Usando grep
:
grep -Po ':\K.*' infile
a asserção \K
ignorará a impressão de tudo antes e os primeiros dois pontos :
vistos.
Tags bash text-processing perl awk sed