Parent=gopAga1_...........-R.; 패턴이 있는 모든 줄에서 -R*을 제거해야 하는 gff 파일이 있습니다.
단일 유전자에 대한 파일 구조는 아래에 표시되어 있지만 파일의 모든 유전자에 대해 전역 수정을 수행해야 합니다.
>2446 17292 . + . ID=gopAga1_00004497-RA;Parent=gopAga1_00004497;Name=gopAga1_00004497-RA;Alias=augustus_masked-scaffold4362-processed-gene-0.0-mRNA-1;_AED=0.12;_QI=0|0.8|0.81|1|1|1|11|1368|404;_eAED=0.12;Note=Similar to PLAT: Tissue-type plasminogen activator (Pongo abelii);
>scaffold4362 maker exon 2446 2545 . + . ID=gopAga1_00004497-RA:exon:4045;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 6721 6834 . + . ID=gopAga1_00004497-RA:exon:4046;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 7241 7415 . + . ID=gopAga1_00004497-RA:exon:4047;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 10114 10205 . + . ID=gopAga1_00004497-RA:exon:4048;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 10478 10649 . + . ID=gopAga1_00004497-RA:exon:4049;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 11037 11122 . + . ID=gopAga1_00004497-RA:exon:4050;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 11518 11713 . + . ID=gopAga1_00004497-RA:exon:4051;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 12794 12930 . + . ID=gopAga1_00004497-RA:exon:4052;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 13006 13146 . + . ID=gopAga1_00004497-RA:exon:4053;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 14920 15047 . + . ID=gopAga1_00004497-RA:exon:4054;Parent=gopAga1_00004497-RA;
>scaffold4362 maker exon 16051 17292 . + . ID=gopAga1_00004497-RA:exon:4055;Parent=gopAga1_00004497-RA;
패턴을 찾기 위해 sed를 사용하고 있지만 줄의 마지막 숫자와 세미콜론 사이의 모든 내용을 제거하기 위해 sed를 사용하는 방법을 잘 모르겠습니다.
현재 스크립트가 작동하나요? 예상 출력은 다음과 같습니다.
sed 's/Parent=gopAga1_.....-R.;$/Parent=gopAga1.....;/ gop.gff
>2446 17292 . + . ID=gopAga1_00004497-RA;Parent=gopAga1_00004497;Name=gopAga1_00004497-RA;Alias=augustus_masked-scaffold4362-processed-gene-0.0-mRNA-1;_AED=0.12;_QI=0|0.8|0.81|1|1|1|11|1368|404;_eAED=0.12;Note=Similar to PLAT: Tissue-type plasminogen activator (Pongo abelii);
>scaffold4362 maker exon 2446 2545 . + . ID=gopAga1_00004497-RA:exon:4045;Parent=gopAga1_00004497;
>scaffold4362 maker exon 6721 6834 . + . ID=gopAga1_00004497-RA:exon:4046;Parent=gopAga1_00004497;
>scaffold4362 maker exon 7241 7415 . + . ID=gopAga1_00004497-RA:exon:4047;Parent=gopAga1_00004497;
>scaffold4362 maker exon 10114 10205 . + . ID=gopAga1_00004497-RA:exon:4048;Parent=gopAga1_00004497;
>scaffold4362 maker exon 10478 10649 . + . ID=gopAga1_00004497-RA:exon:4049;Parent=gopAga1_00004497;
>scaffold4362 maker exon 11037 11122 . + . ID=gopAga1_00004497-RA:exon:4050;Parent=gopAga1_00004497;
>scaffold4362 maker exon 11518 11713 . + . ID=gopAga1_00004497-RA:exon:4051;Parent=gopAga1_00004497;
>scaffold4362 maker exon 12794 12930 . + . ID=gopAga1_00004497-RA:exon:4052;Parent=gopAga1_00004497;
>scaffold4362 maker exon 13006 13146 . + . ID=gopAga1_00004497-RA:exon:4053;Parent=gopAga1_00004497;
>scaffold4362 maker exon 14920 15047 . + . ID=gopAga1_00004497-RA:exon:4054;Parent=gopAga1_00004497;
>scaffold4362 maker exon 16051 17292 . + . ID=gopAga1_00004497-RA:exon:4055;Parent=gopAga1_00004497;
답변1
아마도:
sed 's/-R[^;]*;$/;/'
또는
awk -F ';' -f OFS=';' '{sub(/-R.*/, "",$(NF-1))}; 1'
답변2
$ sed '/^>.*Parent=samp1_/s/-R.;$/;/' <file.fa
>ID=samp1_00004497:4045;Parent=samp1_00004497;
>ID=samp1_00004497:4046;Parent=samp1_00004498;
>ID=samp1_00004497:4047;Parent=samp1_00004499;
>ID=samp1_00004497:4048;Parent=samp1_00004496;
위 명령은 string sed
으로 시작하고 이를 포함하는 모든 줄을 찾고 , 각 줄에 대해 끝 ( 단일 문자가 일치하는 곳)을 로 바꿉니다 . 일치 항목으로 끝나지 않는 줄은 변경되지 않습니다.>
Parent=samp1_
-R.;
.
;
-R.;
문자가 아닌 문자를 끝까지 제거하려면 점을 로 변경하세요 -R.;
.[^;]*
;
;
업데이트된 질문의 경우 Parent=gopAga1_
대신 을(를) 사용하세요 Parent=samp1_
.
답변3
명령줄
sed -re 's/([^-]+).+?;/\1;/g'
각 줄의 전체 내용 -
(제외) 을 출력한 -
다음 끝에 세미콜론을 추가합니다.
고쳐 쓰다
sed -re 's/(_.{8})-R./\1/g'
_
then 의 8자를 기준으로 불필요한 문자가 제거됩니다 -R
.