Мне нужно сделать это:
##fsdfsd
##sdd-ver gen 5.5.7
Xm Gen CDS 1 148 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 149 193 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 194 279 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 280 412 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 413 499 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 500 702 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen extracted region 1 148 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="437225 <- 437372";ID=Bm
Xm Gen extracted region 149 193 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="436969 <- 437013";ID=Bm
Xm Gen extracted region 194 279 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="435418 <- 435503";ID=Bm
Xm Gen extracted region 280 412 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="435209 <- 435341";ID=Bm
Xm Gen extracted region 413 499 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="434376 <- 434462";ID=Bm
Xm Gen extracted region 500 702 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="434084 <- 434286";ID=Bm
Заменить строки (Xm Gen CDS) значениями, присутствующими в строках (Xm Gen извлеченная область). Например, первая строка ($4 столбец:1 заменяется на значение 437225, а $5 столбец:148 заменяется на значение 437372, в строке 2 ($4 столбец:149 заменяется на значение 436969, $5 столбец:193 заменяется на значение 437013 и т. д.) и вывести вывод, как показано ниже.
##gff-version 2
##source-version geneious 5.5.7
Xm Gen CDS 437225 437372 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 436969 437013 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 435418 435503 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 435209 435341 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 434376 434462 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen CDS 434084 434286 . + . Name=;created by=User;modified by=User;ID=Bm
Xm Gen extracted region 1 148 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="437225 <- 437372";ID=Bm
Xm Gen extracted region 149 193 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="436969 <- 437013";ID=Bm
Xm Gen extracted region 194 279 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="435418 <- 435503";ID=Bm
Xm Gen extracted region 280 412 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="435209 <- 435341";ID=Bm
Xm Gen extracted region 413 499 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="434376 <- 434462";ID=Bm
Xm Gen extracted region 500 702 . + . Name=Extracted region from gi|371442828|gb|JH557032.1|;Extracted interval="434084 <- 434286";ID=Bm
решение1
Немного сложный вариант, но работает довольно хорошо.
head -2 file
join <(grep "Xm Gen CDS" file | cat -n) \
<(grep "Xm Gen extracted region" file | cat -n) | \
sed 's/^[0-9]* //;s/CDS [0-9]*\s[0-9]*\(\s.*interval="\([0-9]*\)\s<-\s\([0-9]*\)\)/CDS\t\2\t\3\t\1/;s/ Xm Gen extracted.*//'
grep "Xm Gen extracted region" file
запустить его как скрипт оболочки
#!/bin/bash
FILE="$1"
head -2 "$FILE"
join <(grep "Xm Gen CDS" "$FILE" | cat -n) \
<(grep "Xm Gen extracted region" "$FILE" | cat -n) | \
sed 's/^[0-9]* //;s/CDS [0-9]*\s[0-9]*\(\s.*interval="\([0-9]*\)\s<-\s\([0-9]*\)\)/CDS\t\2\t\3\t\1/;s/ Xm Gen extracted.*//'
grep "Xm Gen extracted region" "$FILE"