Coloque tudo na linha, mas combine com grep

2

Estou tentando obter tudo na linha correspondente excluindo a correspondência usando grep.

Se eu tiver

#define VERSION 0.1

O comando deve ecoar

0.1

Eu vi esta pergunta, mas só quero as coisas da mesma forma linha.

Eu li a página do manual, mas não vejo nada que corresponda ao meu caso de uso específico. Um comando diferente seria melhor do que o grep para isso?

    
por Zach Latta 06.03.2013 / 15:44

2 respostas

2

Uma maneira fácil de conseguir isso é enviar a saída do grep para sed:

command | grep "^#define VERSION" | sed 's/^#define VERSION //'

Você pode obter o mesmo resultado usando somente sed se usar a opção -n e o padrão p (isto é, imprimir) para a expressão regular. Isso substituirá e imprimirá apenas as linhas que foram modificadas:

command | sed -n 's/^#define VERSION //p'

Veja: man sed

    
por 06.03.2013 / 15:48
1

Se a sua versão do grep suporta perl regex, você pode fazer assim:

grep -oP '(?<=#define VERSION )[^ ]*$'

Caso contrário, use duas invocações do grep:

grep '#define VERSION' | grep -o '[^ ]*$'
    
por 06.03.2013 / 15:48

Tags