Como grep uma string em um arquivo e a saída dos dígitos ao lado da string

0

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?

    
por Gautham K 19.10.2016 / 19:28

2 respostas

1

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
    
por 19.10.2016 / 19:39
2
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.

    
por 19.10.2016 / 19:38

Tags