2014-11-01 2 views
0

일부 다운 스트림 분석을 준비하려고하는 파일이 있지만 두 줄의 문자 수가 동일해야합니다. 파일 형식은 다음과 같습니다. 두 번째 줄 (CTTATAATGCCGCTCCCTAAG)과 네 번째 줄 (bbbeeeeegggggiiiiiiiiigghiiiiiiiiiiiiiiiiiigeccccb)은 같은 문자 수를 포함해야합니다.두 줄의 문자 수를 일치 시키십시오.

@HWI-ST:8:1101:3346:2198#GTCCGC/1 
CTTATAATGCCGCTCCCTAAG 
+HWI-ST:8:1101:3346:2198#GTCCGC/1 
bbbeeeeegggggiiiiiiiiigghiiiiiiiiiiiiiiiiiigeccccb 
@HWI-ST:8:1101:10491:2240#GTCCGC/1 
GAGTAGGGAGTATACATCAG 
+HWI-ST:8:1101:10491:2240#GTCCGC/1 
abbceeeeggggfiiiiiigg`gfhfhhifhifdgg^ggdf_`_Y[aa_R 
@HWI-ST:8:1101:19449:2134#GTCCGC/1 
AAGAAGAGATCTGTGGACCA 

은 지금까지 나는 네의 각 세트에서 두 번째 라인을 꺼내 사용하여 각 라인의 길이의 기록을 포함하는 파일을 생성 한 : 지금

grep -v '[^A-Z]' file.fastq |awk '{ print length($0); }' > newfile 

난 그냥 찾고 있어요를 이 레코드를 가리키는 방법으로 줄 끝에서 벗어날 수있는 문자 수에 대한 sed 명령을 지시합니다. 비슷한 :

sed -r 's/.{n}$//' file 

n을 텍스트 파일을 참조하는 정규식으로 바꿉니다. 나는 물건을 지나치게 복제하고 있는지 궁금해하지만 정확한 일치하는 라인이 필요하므로 다른 방법으로 생각할 수 없었습니다. 어떤 도움도 굉장 할 것입니다, 감사합니다!

+0

항상 2 번째 줄과 4 번째 줄입니까? 그 두 명만? –

답변

0

이 당신을 위해 무엇을 찾고있는 사람이 될 수 있습니다

awk ' 
    # If 2nd line of 4-line group, save length as len. 
    NR % 4 == 2 { len = length($0) } 

    # If 4th line of 4-line group, trim the line to len. 
    NR % 4 == 0 { $0 = substr($0, 1, len)} 

    # print every line 
    { print } 
' file 

이 파일이 각 그룹의 2 · 4 라인이 관심있는 것들입니다 4 라인 그룹으로 구성되어 있다고 가정합니다. 또한 각 그룹의 두 번째 줄이 해당 네 번째 줄보다 길지 않다고 가정합니다.

+0

그 뒤에있는 논리를 이해하는 데 2 ​​~ 2 분이 걸렸지 만, 그렇습니다. 완벽하게 작동합니다! 도와 줘서 고마워! –

관련 문제