У меня есть файл журнала 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]
Если только один Tx... на строку:
sed -n 's/.*Tx(0x\(.*\)) to.*/\1/p' logfile > outfile
Опция -n
для подавления вывода строк без соответствия
Решение с использованием awk
с несколькими разделителями:
awk -F 'Tx\\(0x|)' '/Tx/ {print $2}' <your_file>
Где:
-F 'Tx\\(0x|)'
:использовать разделители Tx (0x и)/Tx/
:печатать только строки, содержащие Tx{print $2}
:напечатать второй элемент