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