
У меня есть текстовый файл, который выглядит так:
707.421
KFDTL902
C
107.31 NL
Chn PCO
FMN
Chn Co
727.102
KFDTL901
C
107.32 NL
Chn PCO
FMN
Chn Co
Он повторяется в этом шаблоне. Я пытаюсь сопоставить с 707.xxx ([0-9]{3}.[0-9]{3}), и взять следующие 7 строк после совпадения, и сделать их строками CSV, где первая ячейка будет совпадением с регулярным выражением. Таким образом, вывод будет следующим:
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
Можно ли это сделать с помощью awk или sed? Как использовать следующие 7 строк после совпадения с помощью этих инструментов?
решение1
С 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
Для каждой строки, соответствующей шаблону, прочитайте и добавьте следующие 6 строк в пространство шаблона, затем замените все символы новой строки запятыми.