나는 이 입력을 가지고 있습니다;
scaffold10x_1 AUGUSTUS gene 72040 72306 0.67 - . g4
scaffold10x_1 AUGUSTUS transcript 72040 72306 0.67 - . g4.t1
scaffold10x_1 AUGUSTUS stop_codon 72040 72042 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS CDS 72040 72306 0.67 - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS exon 72040 72306 . - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS start_codon 72304 72306 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS gene 72500 72970 0.99 - . g5
scaffold10x_1 AUGUSTUS transcript 72500 72970 0.99 - . g5.t1
scaffold10x_1 AUGUSTUS stop_codon 72500 72502 . - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS CDS 72500 72970 0.99 - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS exon 72500 72970 . - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS start_codon 72968 72970 . - 0 transcript_id "g5.t1"; gene_id "g5";
나는 이와 같은 출력을 갖고 싶습니다.
scaffold10x_1 AUGUSTUS gene 72040 72306 0.67 - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS transcript 72040 72306 0.67 - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS stop_codon 72040 72042 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS CDS 72040 72306 0.67 - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS exon 72040 72306 . - . transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS start_codon 72304 72306 . - 0 transcript_id "g4.t1"; gene_id "g4";
scaffold10x_1 AUGUSTUS gene 72500 72970 0.99 - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS transcript 72500 72970 0.99 - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS stop_codon 72500 72502 . - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS CDS 72500 72970 0.99 - 0 transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS exon 72500 72970 . - . transcript_id "g5.t1"; gene_id "g5";
scaffold10x_1 AUGUSTUS start_codon 72968 72970 . - 0 transcript_id "g5.t1"; gene_id "g5";
Linux에서 sed 명령을 사용하여 원하는 출력을 얻는 방법은 무엇입니까? 고마워요 카이
답변1
일반적으로 대체 논리와 일부 경계 조건을 설명하는 것이 가장 좋으므로 추측할 필요가 없습니다. 그렇지 않으므로 몇 가지 가정을 해야 합니다.
g
행의 마지막 열 뒤에 숫자(여러 개일 수 있음)와 선택 사항.t1
(항상 )이 오는 경우1
바꾸고 싶습니다.- 라인에 a가 있든 없든 , 충분
.t1
해야 하고 , 없어야 합니다.transcript_id
.t1
gene_id
- 열 구분 기호는 공백입니다.
이 경우 다음 스크립트가 작동해야 합니다. 그렇지 않으면 다음과 같이 조정해야 합니다.
sed -E 's/ (g[0-9]*)(\.t1)?$/ transscript_id "\1.t1"; gene_id "\1";/' yourfile