![괄호 안을 제외하고 모두 제거](https://linux55.com/image/158627/%EA%B4%84%ED%98%B8%20%EC%95%88%EC%9D%84%20%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0%20%EB%AA%A8%EB%91%90%20%EC%A0%9C%EA%B1%B0.png)
">"로 시작하는 줄에서만 대괄호를 포함하여 대괄호 안에 있지 않은 모든 항목을 제거하고 싶습니다. sed에 대한 대안이 있습니까? 또한 줄을 알파벳순으로 정렬하고 싶습니다(예: ">"로 시작하는 줄과 그 아래 줄).
입력 예:
>ID:000:FLKLNFIA_00192 |[Ignicoccus_hospitalis_KIN4-I.gbfspecies]|strain|Ignicoccus_hospitalis_KIN4-I.gbf|LSU ribosomal protei..|447|FLKLNFIA_1(1297538):162644-163090:1 ^^ Archaeagenomesparanahui Ignicoccus_hospitalis_KIN4-I.gbfspecies strain strain.|neighbours:ID:000:FLKLNFIA_00191(1),ID:000:FLKLNFIA_00193(1)|neighbour_genes:LSU ribosomal protei..,SSU ribosomal protei..|
ATGAGTGTGACTA---TTT---GCAATCAGCTAGCTACTACGTACTGATCGTAGCTGACG
>ID:000:MGCDKLCO_01184 |[Archaeoglobus_fulgidus_DSM_4304.gbfspecies]|strain|Archaeoglobus_fulgidus_DSM_4304.gbf|50S ribosomal protei..|471|MGCDKLCO_1(2178400):1005279-1005749:1 ^^ Archaeagenomesparanahui Archaeoglobus_fulgidus_DSM_4304.gbfspecies strain strain.|neighbours:ID:000:MGCDKLCO_01183(1),ID:000:MGCDKLCO_01185(1)|neighbour_genes:LSU ribosomal protei..,SSU ribosomal protei..|
ATGCGCGCGATAGCTAGCTAGCTAGCTTTAGGGGGATTAGCTA----ACTCTGATTCGGA
예상 출력:
>Archaeoglobus_fulgidus_DSM_4304.gbfspecies
ATGCGCGCGATAGCTAGCTAGCTAGCTTTAGGGGGATTAGCTA----ACTCTGATTCGGA
>Ignicoccus_hospitalis_KIN4-I.gbfspecies
ATGAGTGTGACTA---TTT---GCAATCAGCTAGCTACTACGTACTGATCGTAGCTGACG
감사해요
답변1
그리고 perl
:
perl -ne 'push @l, ">" . join("", /\[(.*?)\]/g) . "\n" . <>;
END{print for sort @l}' your-file
그리고 sed
:
<your-file sed 's/^[^[]*\[/>/
s/\][^[]*\[\{0,1\}//g
N;s/\n/\[/' |
sort |
tr '[' '\n'
답변2
나의 (복잡한) 조언:
cat file | grep -Po "^[CGTA-]*$|^>.*$" | grep -Po "(?<=\[).*(?=])|^[ACGT-]*$" | awk '{printf (NR%2==0) ? $0 "\n" : ">"$0"::"}' | sort | sed 's/#/\n/'
Grep에는 다음으로 시작하는 문자 CGTA-
와 줄을 포함하는 줄만 포함됩니다.>
grep -Po "^[CGTA-]*$|^>.*$"
괄호 안에 있는 내용(제외)과 패턴과 일치하는 행만 Grep합니다.ACGT-
| grep -Po "(?<=\[).*(?=])|^[ACGT-]*$"
두 줄마다 연결하고 구분 기호 #
와 첫 번째 문자를 추가한 >
다음 정렬합니다.
| awk '{printf (NR%2==0) ? $0 "\n" : ">"$0"#"}' | sort
#
마지막으로 구분 기호를 새 줄로 바꿉니다.
| sed 's/#/\n/'
산출:
>Archaeoglobus_fulgidus_DSM_4304.gbfspecies
ATGCGCGCGATAGCTAGCTAGCTAGCTTTAGGGGGATTAGCTA----ACTCTGATTCGGA
>Ignicoccus_hospitalis_KIN4-I.gbfspecies
ATGAGTGTGACTA---TTT---GCAATCAGCTAGCTACTACGTACTGATCGTAGCTGACG