Encontrando o último item em uma linha usando grep

12

Estou tentando pegar a última palavra ou frase usando grep para um padrão específico. Neste exemplo, seria a partir da última vírgula até o final da linha:

Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value

E assim a saída desejada para essa linha seria "Great Value". Todas as linhas têm tamanhos diferentes, mas sempre tem uma única vírgula antes das últimas palavras.

Basicamente, gostaria de simplesmente sair da última vírgula até o final da linha. Obrigada!

    
por reversebottle 25.01.2017 / 04:51

2 respostas

27

Aqui:

grep -o '[^,]\+$'
  • [^,]\+ corresponde a um ou mais caracteres que não são , no final da linha ( $ )

  • -o imprime apenas a parte correspondente

Exemplo:

% grep -o '[^,]\+$' <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value
    
por 25.01.2017 / 04:54
14

Sempre gostei de ver uma solução awk , então aqui está (a melhor solução!):

% awk -F, '{print $NF}'  <<<'Blah,3,33,56,5,Foo 30,,,,,,,3,Great Value'
Great Value
    
por 25.01.2017 / 06:16