Se a sua versão de grep
suportar o modo PCRE, você poderá usar grep -Po 'Xmx\K\d+'
Ex.
echo 'F arg[30] = -Xmx4096m' | grep -Po 'Xmx\K\d+'
4096
Estou tentando imprimir um número ao lado de uma string que eu pesquise (usando o shell script).
Por exemplo, meu arquivo contém uma linha
arg[30] = -Xmx4096m
Eu pesquiso o arquivo com a string Xmx
e preciso da saída dos próximos dígitos anexados à string e nada mais é necessário na saída. Como posso conseguir isso?
sed -n 's/.*Xmx\([0-9]\+\).*//p' filename
Explicação:
sed -n
faz sed apenas a saída de impressão quando contada (por p
) s/<p1>/<p2>/p
procura por <p1>
e substitui por <p2>
. depois imprima linha .*Xmx\([0-9]\+\).*
de qualquer string com Xmx
seguido por dígitos. os dígitos são "capturados".
o primeiro grupo capturado. Em palavras humanas: pesquise por linhas contendo Xmx
seguido por dígitos. Tome nota dos dígitos. Descarte tudo, mas mantenha os dígitos. Imprima os dígitos.
Tags grep