문자열에 더 많은 정보 추가

문자열에 더 많은 정보 추가

다음과 같은 gtf 파일이 있습니다.

ChrI    Coding_transcript       gene    8451772 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1"

이제 9열에 더 많은 정보를 추가하고 싶습니다. 이렇게 하면 다음과 같습니다.

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1"; transcript_id "UMM-S589-0.12-gene-1", exon_id "1";

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "2";

이 파일을 만드는 데 사용할 수 있는 간단한 명령을 아는 사람이 있나요? 매우 감사합니다!

답변1

이 시도:

awk 'NF==10{print $0";transcript_id "$10", exon_id ""\""++count[$3]"\""";"}NF!=10{print $0}' file.gtf

산출:

ChrI    Coding_transcript       exon    8501974 8509212 .       -       .       gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "1";

ChrI    Coding_transcript       exon    8491643 8501928 .       -       0        gene_id "UMM-S589-0.12-gene-1";transcript_id "UMM-S589-0.12-gene-1", exon_id "2";
  • NF==10필드 수가 10인지 확인합니다.
    • print $0전체 라인을 인쇄합니다.
    • transcript_id $10gene_id와 동일하기 때문에
    • ++count[$3]엑손의 발생 횟수를 인쇄합니다(세 번째 필드).
  • NF!=10라인을 인쇄하면 됩니다.

관련 정보