나는FASTA 형식파일 이름은 ">" 기호 뒤에 오고, 그 뒤에는 해당 시퀀스가 포함된 두 번째 줄이 옵니다. 이름(첫 번째 행)에서 refseqID를 필터링하고 부동 값을 제거하고 싶습니다. 완전한 파일에는 많은 이름/시퀀스가 있습니다.
다음을 사용하여 태그에서 "hg38_ncbiRefSeq_"를 제거할 수 있습니다.
sed 's/hg38_ncbiRefSeq_//g' file
원본 형식
>hg38_ncbiRefSeq_NM_001276352.2 range=chr1:67093580-67127240 5'pad=0 3'pad=0 strand=- repeatMasking=none
MAEKILEKLDVLDKQAEIILARRTKINRLQSEGRKTTMAIPLTFDFQLEFEEALATSASKAISKIKEDKSCSITKSKMHVSFKCEPEPRKSNFEKSNLRPFFIQTNVKNKESESTEPVEEHLKSRSIRPYLYLKDTTEMENAGPLNVLYSQHRQACRRSLGSTDFSPMFNIQSNAHKKEKDSTLFTAQIEKKPRKPLDSVGLLEGDRNKRNKRTQIP
>hg38_ncbiRefSeq_NM_001276351.2 range=chr1:67093005-67127240 5'pad=0 3'pad=0 strand=- repeatMasking=none
MAEKILEKLDVLDKQAEIILARRTKINRLQSEGRKTTMAIPLTFDFQLEFEEALATSASKAISKIKEDKSCSITKSKMHVSFKCEPEPRKSNFEKSNLRPFFIQTNVKNKESESTAQIEKKPRKPLDSVGLLEGDRNKRKKSPQMNDFNIKENKSVRNYQLSKYRSVRKKSLLPLCFEDELKNPHAKIVNVSPTKTVTSHMEQKDTNPIIFHDTEYVRMLLLTKNRFSSHPLENENIYPHKRTNFILERNCEILKSIIGNQSISLFKPQKTMPTVQRKDIQIPMSFKAGHTTVDDKLKKKTNKQTLENRSWNTLYNFSQNFSSLTKQFVGYLDKAVIHEMSAQTGKFERMFSAGKPTSIPTSSALPVKCYSKPFKYIYELNNVTPLDNLLNLSNEILNAS
최종 형식
>NM_001276352
MAEKILEKLDVLDKQAEIILARRTKINRLQSEGRKTTMAIPLTFDFQLEFEEALATSASKAISKIKEDKSCSITKSKMHVSFKCEPEPRKSNFEKSNLRPFFIQTNVKNKESESTEPVEEHLKSRSIRPYLYLKDTTEMENAGPLNVLYSQHRQACRRSLGSTDFSPMFNIQSNAHKKEKDSTLFTAQIEKKPRKPLDSVGLLEGDRNKRNKRTQIP
>NM_001276351
MAEKILEKLDVLDKQAEIILARRTKINRLQSEGRKTTMAIPLTFDFQLEFEEALATSASKAISKIKEDKSCSITKSKMHVSFKCEPEPRKSNFEKSNLRPFFIQTNVKNKESESTAQIEKKPRKPLDSVGLLEGDRNKRKKSPQMNDFNIKENKSVRNYQLSKYRSVRKKSLLPLCFEDELKNPHAKIVNVSPTKTVTSHMEQKDTNPIIFHDTEYVRMLLLTKNRFSSHPLENENIYPHKRTNFILERNCEILKSIIGNQSISLFKPQKTMPTVQRKDIQIPMSFKAGHTTVDDKLKKKTNKQTLENRSWNTLYNFSQNFSSLTKQFVGYLDKAVIHEMSAQTGKFERMFSAGKPTSIPTSSALPVKCYSKPFKYIYELNNVTPLDNLLNLSNEILNAS
답변1
다음과 같이 시도해 볼 수 있습니다 awk
.
awk -F'[ _.]' '{if ($0~"^>") print ">"$3"_"$4; else print $0}' input_file
이전 의견에서 제안한 대로 더 짧은 형식을 사용할 수 있습니다.에드 모튼:
awk -F'[ _.]' '{print (/^>/ ? ">"$3"_"$4 : $0)}' input_file