Como imprimir do separador de campo “:” até o final da linha?

0

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
    
por yael 21.08.2017 / 17:25

3 respostas

3

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-
    
por 21.08.2017 / 17:28
2

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.

    
por 21.08.2017 / 17:29
0

Usando grep :

grep -Po ':\K.*' infile

a asserção \K ignorará a impressão de tudo antes e os primeiros dois pontos : vistos.

    
por 21.08.2017 / 18:00