извлечь строки из текстового файла, шаблон будет определен путем анализа файла

извлечь строки из текстового файла, шаблон будет определен путем анализа файла

Необходимо извлечь строки из txt-файла в другие файлы по следующему сценарию:

Первым шаблоном для сопоставления всегда будет строка, начинающаяся со слова identifier, затем вторым шаблоном будет первая строка, начинающаяся со слова 000:

в приведенном ниже примере это будет

000: thislineneedstobeextracted  

после того, как мы записали вывод в первый файл, мы переходим к извлечению строк, которые начинаются со слова identifier, и строк, которые снова начинаются с 000: но на этот раз для второго уникального вхождения, найденного в файле, в нашем примере,

000: alsothislineneedstobeextracted  

и вывод будет записан во второй файл и т.д.

образец ввода

identifier 767  
linetobeignored  
anotherlinetobeignored  
000: thislineneedstobeextracted  
000: alsothislineneedstobeextracted  
blankline  
identifier 7686    
linetobeignored  
anotherlinetobeignored  
000: thislineneedstobeextracted  
000: alsothislineneedstobeextracted  
000: ayetanotherlineneedstobeextracted  

пример выходного файла file1.txt:

000: thislineneedstobeextracted  
identifier 767  
identifier 7686    

пример выходного файла file2.txt:

000: alsothislineneedstobeextracted  
identifier 767  
identifier 7686    

решение1

Попробуйте сawk

awk '
    /^id/{
        if(line[1]){
            for(n in line)print line[n],i,$0 >> "file"n".txt"
            delete(line)
            }
        c=0
        i=$0
        }
    /^000:/{
        line[++c]=$0
        }
    END{
        if(line[1]){
            for(n in line)print line[n],i,$0 >> "file"n".txt"
        }
    ' OFS=\\n txt.file

Связанный контент