Extrai uma string entre um padrão de string específico

0

Eu tenho um arquivo de log ethereum do qual eu gostaria de extrair hash de transação localizado entre uma string particular Tx (0x e ) e há muitas linhas antes e depois.

Arquivo de entrada

I0623 10:56:00.025283 miner/worker.go:516] commit new work on block 1903 with 0 txs & 0 uncles. Took 621.171µs
I0623 10:56:00.025349 miner/unconfirmed.go:105]                     
por Varun Gupta 23.06.2017 / 08:43

2 respostas

0

Solução usando awk com vários delimitadores:

awk -F 'Tx\(0x|)' '/Tx/ {print $2}' <your_file>

Onde:

  • -F 'Tx\(0x|)' : use delimitadores Tx (0x e )
  • /Tx/ : somente linhas de impressão contendo Tx
  • {print $2} : print segundo elemento
por 23.06.2017 / 09:20
0

Se apenas um Tx ... por linha:

sed -n 's/.*Tx(0x\(.*\)) to.*//p' logfile > outfile

Opção -n para suprimir a saída de linhas sem correspondência

    
por 23.06.2017 / 09:03

Tags