Shell Script: extrair uma parte da string de um arquivo depois que uma correspondência for encontrada

1

Um script deve ser escrito para extrair e retornar um valor de string de um arquivo. Isso deve ser feito somente depois que uma correspondência for encontrada no arquivo para o padrão fornecido.

Exemplo:

"id":"re454sv:57ghg34sfw:87wre56:rty4598gh" 

Este texto é a sub-parte de um arquivo de log grande e também muitas instâncias deste com "id":"some value" podem ocorrer. Eu preciso retornar essa parte de 'algum valor' toda vez e de muitos arquivos nesse diretório.

Acho que sed utility no Unix ajuda aqui, mas não consegui descobrir o uso exato. Ficaria feliz se alguém pudesse ajudar.

    
por Rahul 01.05.2015 / 10:05

2 respostas

1

Você não sabe se deseja apenas o primeiro valor : separado ou todo o restante da linha depois da tag "id" .

O primeiro é:

sed -nre 's/^"id":"([^:]*):.*//p' <file>

O último é:

sed -nre 's/^"id":(.*)//p' <file>

Observe que os comutadores são importantes. -n garante que nada seja impresso (com p tail imprimindo as linhas correspondentes). -r ativa a análise estendida da expressão regular para que coisas como colchetes não precisem ser escapadas.

    
por 01.05.2015 / 10:15
-1

sed 's/"id":"\([^"]*\)"//g'

Extrai o valor se você canaliza via stdin

    
por 01.05.2015 / 10:10