Вставить строку или строку после последнего экземпляра определенной переменной поиска в цикле

Мне интересно, может ли кто-нибудь помочь мне с конкретным вопросом кодирования. У меня есть файл последовательности ДНК, который читает что-то вроде этого (в качестве примера):

Plate1A1_R1_AGTAGTACGACTAGCATCAGCATACGATCAGCATCAGCATCAG Plate1A1_R1_GTAGATCGATGCATGCATGCTAGCTAGCTAGCTAGCTAGCTAA Plate1A1_R1_AGCTAGCATCGATCGATGCTAGCATGCATCGATCGATGCATGC Plate1A1_R2_AGCATCGATGCAGCATGCTAGCTAGCTAGCTAGCAGCTAGTCT Plate1A1_R2_AGCATGCATCGATCGTAGCTAGCAGCGAGCGGCATCGATCGAT Plate1A2_R1_CAGCTAGATGCATCGATCGATCGATCGATCGATGCTAGCTTAC Plate1A2_R1_CAGTAGCATGCATGCATGCATGCATGCATCGATGCTAGCTAGC Plate1A2_R1_ACAACGTAGCTAGCTAGCTACTACTAGTCATCATCGATGCTAG Plate1A2_R1_CAGCTAGCTAGCTAGCTAGGCTACATCGATCGTAGCTAGTCGA Plate1A2_R1_CAGTCAGCATGCTATCGATCGTAGCTAGTCATCGATGTAGTGA ... etc. 

Вы можете видеть, что есть строки, которые принадлежат к одному и тому же шаблону запуска (здесь: Plate1A1_R1, Plate1A1_R2, Plate1A2_R1). Я хотел бы поместить пустую строку после каждой группы, например:

 Plate1A1_R1_AGTAGTACGACTAGCATCAGCATACGATCAGCATCAGCATCAG Plate1A1_R1_GTAGATCGATGCATGCATGCTAGCTAGCTAGCTAGCTAGCTAA Plate1A1_R1_AGCTAGCATCGATCGATGCTAGCATGCATCGATCGATGCATGC Plate1A1_R2_AGCATCGATGCAGCATGCTAGCTAGCTAGCTAGCAGCTAGTCT Plate1A1_R2_AGCATGCATCGATCGTAGCTAGCAGCGAGCGGCATCGATCGAT Plate1A2_R1_CAGCTAGATGCATCGATCGATCGATCGATCGATGCTAGCTTAC Plate1A2_R1_CAGTAGCATGCATGCATGCATGCATGCATCGATGCTAGCTAGC Plate1A2_R1_ACAACGTAGCTAGCTAGCTACTACTAGTCATCATCGATGCTAG Plate1A2_R1_CAGCTAGCTAGCTAGCTAGGCTACATCGATCGTAGCTAGTCGA Plate1A2_R1_CAGTCAGCATGCTATCGATCGTAGCTAGTCATCGATGTAGTGA ... etc. 

Это означает, что мне нужно уметь захватывать первые 11 символов каждой строки, искать, где этот шаблон больше не встречается в строке ниже, и вставлять пустую строку в эту точку.

Я пробовал работать с sed и awk, while read line циклы, но не мог найти способ удерживать первые 11 символов в переменной поиска, которые будут использоваться через последовательные строки текстового файла, если эта переменная поиска «застревает» при обработке отдельной строки.

Я надеюсь, что кто-то сможет помочь с решением, которое позволит доступ к файлу с ссылками с перенаправлением (<) (с сотнями строк данных последовательности ДНК в этом формате и несколькими сотнями отдельных имен пластин, сценарий перемещается по файлу по очереди), например

 while read line ; do echo "${line:0:11}" ; done < filename.txt 

Спасибо за любые предложения!

One Solution collect form web for “Вставить строку или строку после последнего экземпляра определенной переменной поиска в цикле”

 awk '{ thisplate=substr($0, 1, 11); if (thisplate != plate) { print ""; plate=thisplate }; print }' < input | sed '1d' 

Это более длинная версия комментария Сукминдера, которая только что появилась; он сохраняет префикс 11-charcter и печатает новую строку, если новый префикс отличается от предыдущего префикса. sed удаляет пустую первую строку.

  • Перенести первые N строк вывода в конец без использования временного файла
  • Замените строку без учета регистра во всех файлах папок
  • Как удалить текст перед разделителем в Linux
  • Unix - поиск имен с egrep
  • Как удалить повторяющиеся символы?
  • Как написать данные отдельно во многих текстовых файлах, содержащих одни и те же поля?
  • Поиск текстового файла с помощью одной строки с использованием регулярных выражений
  • Как сравнить строки в двух файлах
  • Как заменить все вкладки в каждом файле в ветке файловой системы на 2 пробела?
  • Каким образом можно извлечь сегмент из текстового файла?
  • Манипулирование файлами; Вставляйте «;» каждый 12, 44 и 60-й символы в каждую строку текстового файла
  • Объединение строк текста с повторным началом
  • Linux и Unix - лучшая ОС в мире.