Я извлекаю интересующий шаблон в файл. В каждой строке я повторяю шаблон, и я хочу заказать все повторяющиеся шаблоны для каждой строки в формате, разделенном запятой. Например: В каждой строке у меня есть строка, как это:Как извлечь все повторяющиеся шаблоны в строке в формате, разделенном запятыми
Line1: InterPro: IPR000504 InterPro: IPR003954 InterPro: IPR012677 Pfam: PF00076 PROSITE: PS50102 SMART: SM00360 SMART: SM00361 EMBL: CP002684 протеомов: UP000006548 GO: GO: 0009507 GO: GO: 0003723 GO: GO: 0000166 Gene3D: 3.30.70.330 SUPFAM: SSF54928 Eggnog: KOG0118 Eggnog: COG0724 InterPro: IPR003954
Line2: InterPro: IPR000306 InterPro: IPR002423 InterPro: IPR002498 Pfam: PF00118 Pfam: PF01363 Pfam: PF01504 PROSITE: PS51455 SMART: SM00064 SMART: SM00330 InterPro: IPR013083 Proteomes: UP000006548 GO: GO: 0005739 GO: GO: 0005524 EMBL: CP002686 GO: GO: 0009555 GO: GO: 0046872 GO: GO: 0005768 GO: GO : 0010008 Gene3D: 3.30.40.10 InterPro: IPR017455
Я хочу, чтобы извлечь все InterPro идентификаторы для каждой линии, вроде как это:
IPR000504, IPR003954, IPR012677, IPR003954
IPR000306, IPR002423, IPR002498, IPR013083, IPR017455
Я использовал этот скрипт:
while read line; do
NUM=$(echo $line | grep -oP 'InterPro:\K[^ ]+' | wc -l)
if [ $NUM -eq 0 ];then
echo "NA" >> InterPro.txt;
fi;
if [ ! $NUM -eq 0 ];then
echo $line | grep -oP 'InterPro:\K[^ ]+' | tr '\n' ',' >> InterPro.txt;
fi;
done <./File.txt
Проблема заключается в том, что я запускаю этот скрипт, все значения шаблона в файле File.txt печатаются в одной строке. Я хочу, чтобы все значения интересующего шаблона каждой строки печатались в отдельной строке.
Спасибо заранее