gff에서 유전자와 mRNA의 좌표를 바꾸려고 합니다. CDS 및 mRNA와 같은 다른 항목이 내 코드의 영향을 받지 않고 내 출력에 그대로 나열되기를 원합니다. 사용 중인 코드에서 구문 오류가 발생합니다. 원하는 출력을 얻는 방법을 알아야 합니다.
내 입력 gff:
Chr01 xyz gene 210262 212819 . - . ID=Chr01.g13944
Chr01 xyz mRNA 210262 212819 . - . ID=Chr01.g13944;Parent=Chr01.g13944
Chr01 xyz CDS 210262 210528 . - 0 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 210262 210528 . - . ID=Chr01.g13944.exon4;Parent=Chr01.g13944
Chr01 xyz CDS 210622 210728 . - 2 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 210622 210728 . - . ID=Chr01.g13944.exon3;Parent=Chr01.g13944
Chr01 xyz CDS 210933 212121 . - 0 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 210933 212121 . - . ID=Chr01.g13944.exon2;Parent=Chr01.g13944
Chr01 xyz CDS 212730 212819 . - 0 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 212730 212819 . - . ID=Chr01B.g13944.exon1;Parent=Chr01B.g13944
원하는 출력:
Chr01 xyz gene 210162 212919 . - . ID=Chr01.g13944
Chr01 xyz mRNA 210162 212919 . - . ID=Chr01.g13944;Parent=Chr01.g13944
Chr01 xyz CDS 210262 210528 . - 0 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 210262 210528 . - . ID=Chr01.g13944.exon4;Parent=Chr01.g13944
Chr01 xyz CDS 210622 210728 . - 2 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 210622 210728 . - . ID=Chr01.g13944.exon3;Parent=Chr01.g13944
Chr01 xyz CDS 210933 212121 . - 0 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 210933 212121 . - . ID=Chr01.g13944.exon2;Parent=Chr01.g13944
Chr01 xyz CDS 212730 212819 . - 0 ID=Chr01.g13944.cds;Parent=Chr01.g13944
Chr01 xyz exon 212730 212819 . - . ID=Chr01B.g13944.exon1;Parent=Chr01B.g13944
awk -F '\t' '{if ($3 ~ /gene/ || $3 ~ /mRNA/) print $1,$2,$3,$4-100,$5+100,$6,$7,$8,$9 || if ($3 ~ /CDS/ || $3 ~ /exon/) print$0}' input.gff > out.gff
답변1
노력하다:
awk 'BEGIN{ FS=OFS="\t" }
($3=="gene" || $3=="mRNA"){ $4-=100; $5+=100 }1' infile
이는 "유전자" 및 "mRNA" 유형 게놈의 좌표만 변경하고 다른 유형은 변경되지 않습니다.