Converta 7 linhas após a correspondência em linhas CSV usando awk ou sed

Converta 7 linhas após a correspondência em linhas CSV usando awk ou sed

Eu tenho um arquivo de texto parecido com este:

707.421
KFDTL902
C
107.31 NL
Chn PCO
FMN 
Chn Co
727.102
KFDTL901
C
107.32 NL
Chn PCO
FMN 
Chn Co

Ele se repete neste padrão. Estou tentando corresponder ao 707.xxx ([0-9]{3}.[0-9]{3}) e pegar as próximas 7 linhas após a correspondência e torná-las linhas de um CSV com o primeiro célula sendo a correspondência de regex. Então a saída seria:

707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN,Chn Co
707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN,Chn Co
707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN,Chn Co

É possível fazer isso usando awk ou sed? Como posso usar as próximas 7 linhas após uma partida usando essas ferramentas?

Responder1

Com sed:

$ sed '/^[0-9]\{3\}\.[0-9]\{3\}$/{N;N;N;N;N;N;s/\n/,/g}' input.txt
707.421,KFDTL902,C,107.31 NL,Chn PCO,FMN ,Chn Co
727.102,KFDTL901,C,107.32 NL,Chn PCO,FMN ,Chn Co

Para cada linha que corresponda ao padrão, leia e anexe as próximas 6 linhas ao espaço do padrão e, em seguida, substitua todas as novas linhas por vírgulas.

informação relacionada