fasta 헤더의 첫 번째 콜론과 두 번째 콜론 사이의 문자를 유지하려고 합니다. 내 코딩 기술은 매우 제한되어 있기 때문에 sed 및 awk를 사용하려는 시도는 실패했습니다.
존재하다:
>TRINITY_DN10034_c0_g1:TRINITY_DN10034_c0_g1_i1:g.1561:m.1561
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1:TRINITY_DN10322_c0_g1_i2:g.1424:m.1424
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
예상되는:
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
도움이 필요하세요?
답변1
그리고 awk
:
awk -F: '{ if (NF==1) { print } else { print ">"$2 } }' file
아니면 조금 압축해 보세요.
awk -F: '{ print (NF==1) ? $1 : ">"$2 }' file
:
행에 필드가 하나만 있으면 필드 구분 기호를 사용하고 첫 번째 필드를 인쇄하고, >
그렇지 않으면 두 번째 필드를 인쇄합니다.
그리고 sed
:
sed 's/^>[^:]\+:\([^:]\+\).*/>\1/' file
답변2
표준 sed
:
$ sed '/^>/{ s/[^:]*:/>/; s/:.*//; }' file.fa
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
이는 s/[^:]*:/>/
a s/:.*//
(fasta 헤더 라인)로 시작하는 모든 라인에 두 가지 대체를 모두 적용합니다.file.fa
>
:
첫 번째 교체는 첫 번째 문자를 포함하여 줄의 시작 부분을 교체합니다 >
.
두 번째 교체는 :
결과 데이터의 첫 번째 항목( 원래 행의 두 번째 항목)부터 행 끝까지 :
모든 내용을 제거합니다.
:
이렇게 하면 접두사가 붙은 두 번째 구분 필드가 남게 됩니다 >
.
표준 awk
:
$ awk -F ':' '/^>/ { $0 = ">" $2 } { print }' file.fa
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
이는 필드 구분 기호로 사용되며 :
다음으로 시작하는 줄이 나타나면 >
전체 줄과 >
두 번째 줄이 뒤따라 대체되어 :
필드를 구분합니다. 수정 여부에 관계없이 모든 행이 인쇄됩니다.
답변3
제안된 솔루션:
GNU sed 사용
cut -f2 -d':' file | sed '1~2s/^/>/'
산출:
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT
답변4
이 PBM을 처리하는 방법에는 여러 가지가 있으며 그 중 일부는 다음과 같습니다.
$ cut -d: -f2 | sed -e '$!N;s/^/>/' file
$ awk -F: '/^>/{$0 = ">" $2}1' file
$ perl -F: -pale ' s/^>\K.*/$F[1]/' file
$ sed -e '
/\n/{P;d;}
/^>/y/:/\n/
s/\n/&>/;//D
' file
결과
>TRINITY_DN10034_c0_g1_i1
CCAGCGCCACGGAGGGCGAAGGCGAAGGCGGTGGTTTTGAACGATGAGGTGCCGCCGGTG
>TRINITY_DN10322_c0_g1_i2
GATCCGCCTTCTATAACTGGAAAAGAAGAGGATGAGGTGCCGCCGATGAGTCTACCTTCT