다른 파일을 사용하여 grep 및 다음 행과 일치하는 행의 일부를 추출하고 새 파일에 저장하십시오.

다른 파일을 사용하여 grep 및 다음 행과 일치하는 행의 일부를 추출하고 새 파일에 저장하십시오.

한 줄에는 DNA 서열 식별자가 있고 그 바로 아래의 다음 줄에는 DNA 서열이 있는 파일이 있습니다. DNA 서열은 길지만 정렬되어 있습니다.

파일 1.fasta:

>AB244308.1.1447 233_28379 1..292

------------------------------------- ------------------------------------- ------------------------------------- GTGCAG -CCGC-CGC-GGTAATAC-GG-AGGAT-GCG-A-GCG-TTATC-CGG-ATTCATT-GG-GT-TTA--AAGGGTGCGCAGG-CGG-GCGT-AT----------- - -------AA------GTCA--------- -- - ----------------GGG--G--TG--A-AA-TG--CC- AC- GG ------------------------------------------------- - ------------------------------------------------- - ------------------------------------------------- ---------CT- C-AA------------------------- -------------- ---------- ---------------- ---------------------------------- ----- ----------- ---CCGTGGA--AC----TG--CC---T-- T---- ---------- T--GA-TA---C------------ ---- ---------- ---------- --T--GT--AT--GTC----- ---------- ---------- ----- ---------- --------- ------ ---------- --TTGAGT--T-- ---T-AG------TT-GA---- -----AGTG---GG- C - - - - - - - - - - - - - - - - - - - - - - - - - - - ----------------------------- -------- - --------------- ------GG--A--ATG--------- -- -------------- ------------- -- --------- ----- -- ------TAGC-AT--GT-AG-CG- GT--G--- ------- ----A--AA--------------- ------- ----------------- ------------ ------- -------TG-C-AT-AG--AG-A-TG---------- ------------ ----- --CT------AC------AGA-AC- A-CC--------- -------- ---- -------------- ---GA--T--A--GC-GAA-G--GC----A----- -G--CTCA- --CTA---------A- -GT-TA------------------- -------- ------ ---------- ----------- ------ ------- -------------- ------ -----AG---------ACT--GA--CG-----C--- -------------- ------ ----------TC--A-TG- -CA-CG-A--AA-GC---- G-TG--GG -G-AT-CA-AA-CA--GG-AT--------TA-G-ATA- -------CC-CCC-GTA--GT -CC---- ---------------- ----- ------ ------------- -------- ------ ---------- ----------- ------ ------- -------------- ------ ---- ----------------- ------ -------------- -------------------- ------ ----------- ----------------------- ------ --

이 파일에는 이 형식을 따르는 약 112,000개의 시퀀스가 ​​있습니다. 약 20개의 시퀀스 식별자가 있는데 이를 fasta 파일에서 추출하여 다른 파일에 저장하고 싶습니다.

시퀀스 식별자는 아래와 같이 txt 파일에 있습니다.

파일 2.txt:

AB244308.1.1447
New.ReferenceOTU151 
New.CleanUp.ReferenceOTU19 
New.ReferenceOTU59
New.CleanUp.ReferenceOTU6

시퀀스 식별자가 있는 라인을 추출하는 것 외에도 DNA 시퀀스가 ​​있는 다음 라인을 추출하여 모두 새 텍스트 파일에 인쇄하고 싶습니다.

이 답변을 통해 알게 되었습니다(다른 파일 목록의 문자열이 포함된 텍스트 파일에서 줄을 추출하는 방법은 무엇입니까?) grep과 sed를 사용해야 합니다. 또 다른 답변도 찾았습니다(https://stackoverflow.com/questions/7103531/how-to-get-the-part-of-file-after-the-line-that-matches-grep-expression-first)은 grep과 일치하는 라인을 얻는 것과 관련이 있습니다.

안타깝게도 이러한 답변을 결합하여 원하는 것을 얻는 방법을 잘 모르겠습니다.

답변1

그들이 말했듯이, 고양이의 가죽을 벗기는 방법은 여러 가지가 있습니다.

grep -F -f File2.txt -A 1 File1.fasta > File3.log

< File2.txt sed -e 's|[.]|\\&|g; s|.*|g/^>&/.,.+1W File3.log|' | ed -s - File1.fasta

ed여기서는 동적으로 생성된 배치 스크립트 에 시퀀스 식별자를 적용합니다 . 그런 다음 ed이를 전달하여 fasta파일을 처리하고 결과를 저장하는 데 사용합니다.File3.log

답변2

시퀀스가 항상 한 줄에 있는 경우 이는 사소한 일입니다(표준 fasta 형식이 아닙니다. btw, fasta는 일반적으로 한 줄에 60자를 가집니다). 일치하는 줄과 다음 줄을 인쇄하려면 grepwith를 사용 하고 검색할 패턴 목록을 제공하세요.-A 1-f

grep -A1 -f File2.txt File1.fasta 

그러나 하나의 시퀀스를 호출 >foobar하고 다른 시퀀스의 이름을 지정 >foo하고 foo이 경우에는 둘 다 인쇄됩니다. 더 복잡한 솔루션을 보려면 내 답변을 참조하세요.여기. retrievesqs.pl 스크립트를 원하시면 알려주세요. 해당 링크에서는 더 이상 사용할 수 없습니다. 이 답변을 업데이트해야 합니다.

답변3

20개의 식별자 각각에 대한 txt 파일이 있습니까? 그런 다음 그것들이 순서1.txt 등으로 불린다고 가정합니다. (적응해주세요)

for file in sequence*.txt; do
  id=`grep AB $file`
  grep $id -A1 $file1.fasta |grep -v $id
done

두 번째 줄은 ID가 항상 포함되어 있다고 가정합니다 AB. 그렇지 않은 경우 항상 첫 번째 줄일 수도 있으며 그런 다음 해당 을 사용합니다 head -1 $file.

세 번째 줄은 id 행과 후속 행을 추출합니다. 두 번째 grep은 id 행을 삭제합니다. 어떤 시퀀스가 ​​어떤 ID에 해당하는지 알 수 있도록 ID 행을 시퀀스와 함께 출력하려면 이를 제거할 수 있습니다.

추가 grep옵션을 사용하면 -m1파일에 일치하는 항목이 하나만 있다는 것을 알 수 있으므로 검색 속도를 약간 높일 수 있습니다.

관련 정보