Если вы ленивы, как я, вы не хотите иметь дело с массивами и циклами и оставить это на ваше усмотрение. Вот почему я предпочитаю sed
и просто добавляю те Ref.txt
строки (, которые обозначены запятой )в пробеле с H
. На самом деле я добавляю еще одну запятую, чтобы знать, что шаблоны всегда находятся между двумя запятыми. Итак, вместе это /,/{s/$/,/;H;d;}
.
Теперь, для каждой строки Seq.txt
, я добавляю пробел к своей эталонной стопке с помощью G
и позволяю команде s
заменить шаблон на шаблон, найденный в стопке. Как часто регулярное выражение легче написать, чем прочитать.
Давайте теперь посмотрим на пространство шаблонов:
ABCDEFG\n\nABCDEFG,15147,ABC,ABCD,ABCDE\nHIJKLMN,500,HIJKLM,HIJKL,HIJK
\_____/ \_____/ \_/
replace by this if match
^
)с соответствующей деталью([A-Z]+
)и некоторыми деталями до и после([A-Z]*
)\n[A-Z]*,
,\1,
Все вместе это дает
sed -E '/,/{s/$/,/;H;d;};G;s/^[A-Z]*([A-Z]{1,})[A-Z]*\n.*\n([A-Z]*),[A-Z0-9,]*,\1,.*/\2/;P;d' Ref.txt Seq.txt