Retornando apenas a parte de uma linha após um padrão correspondente

3

Eu tenho um arquivo ( file_name ) que contém exatamente uma ocorrência da string Result: , no início de uma linha. Quero imprimir todos os caracteres após a string Result: nessa linha até encontrar um espaço. Qual comando de shell devo usar?

grep "Result: " file_name | tail -c +9 

não está funcionando.

    
por RIchard Williams 07.11.2011 / 05:01

3 respostas

7

A maneira mais simples seria usar awk .

awk '/^Result: / {print $2}' file_name

Isso combina linhas que começam com Result: e imprime o segundo campo no arquivo, conforme definido pelo padrão $ IFS, que é espaço em branco.

    
por 07.11.2011 / 05:13
3

Parece que você quer:

sed -ne 's/^Result: \([^ ]*\).*//p' file_name

Corresponde à linha com "Resultado:" e imprime a primeira palavra depois dela. Outras linhas não são exibidas.

    
por 07.11.2011 / 05:16
0
tillblank=$(egrep -o "^Result: [^ ]* " file)
echo ${tillblank/*:/}

egrep -o apenas mostra o padrão que você pesquisou. A próxima linha remove tudo até o cólon.

    
por 07.11.2011 / 05:35