Eu tenho um diretório com vários arquivos com a extensão .failed
Esse número de arquivos pode mudar todos os dias.
Esses arquivos possuem o seguinte formato:
file1.failed:
FHEAD|4525|20170109000000|20170125024831
THEAD|150001021|20170109121206||
TDETL|4000785067||1|EA|||RETURN|||N
TTAIL|1
THEAD|150001022|20170109012801||
TDETL|4000804525||1|EA|||RETURN|||N
TTAIL|1
FTAIL|6
Eu preciso extrair todo o texto entre THEAD | e | 2 para um arquivo de saída. estou tentando o seguinte e funciona apenas se eu tiver apenas um arquivo no diretório.
sed -n 's:.*THEAD|\(.*\)|2.*::p' <*.failed >transactions.log
A saída é:
transactions.log:
150001021
150001022
Agora, como posso fazer o mesmo, mas para vários arquivos? (número indeterminado de arquivos).
Além disso, é possível adicionar o nome do arquivo em todas as linhas do arquivo de saída da seguinte forma:
saída esperada:
file1.failed,150001021
file1.failed,150001022
file2.failed,150001023
file2.failed,150001024
file2.failed,150001025
file2.failed,150001026
file3.failed,150001027
file3.failed,150001028
Obrigado antecipadamente,