Извлечь строку между конкретным шаблоном строки

У меня есть файл журнала ethereum , из которого я хотел бы извлечь хеш транзакции, расположенный между определенной строкой Tx (0x и ) и есть много строк до и после него.

Входной файл

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]                     
0
23.06.2017, 09:57
2 ответа

Если только один Tx... на строку:

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

Опция -n для подавления вывода строк без соответствия

0
28.01.2020, 04:44

Решение с использованием awkс несколькими разделителями:

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

Где:

  • -F 'Tx\\(0x|)':использовать разделители Tx (0x и)
  • /Tx/:печатать только строки, содержащие Tx
  • {print $2}:напечатать второй элемент
0
28.01.2020, 04:44

Теги

Похожие вопросы