2014-03-26 4 views
-2

저는 리눅스 세계에서 상당히 새롭고 여러분의 도움이 필요합니다. 텍스트 파일의 특정 위치에서 특정 문자를 검색하려면 코드가 필요합니다. 즉줄의 특정 위치에서 특정 문자를 검색하십시오.

파일 sequences.txt은 다음과 같습니다

ACGTCAGTCAG**T**CAGCATC**G**ATCGACTACGACCGTAGCTAGCTATACGACT**G**ATCAGCTACGATCAGCTACGATCAGCTACGAT 
ACGTCAGTCAG**A**CAGCATC**C**ATCGACCATGCTAGCCGTACGATTAGCGACT**C**ATCAGCTACGATCAGCTACGATCAGCTACGAT 
ACGTCAGTCAG**T**CAGCATCATCGACTACGACTACGATCGATCGATCGGACT**G**ATCAGCTACGATCAGCTACGATCAGCTACGATG 
ACGTCAGTCAG**A**CAGCATC**G**ATCGACTACGACGATCGATCGATCTACGACT**C**ATCAGCTACGATCAGCTACGATCAGCTACGAT 

내가 원하는 같은 특정 charactrs를 포함하는 동일한 라인을 그룹화 다른 출력 파일의 데이터 집합을 분할하는 것입니다. 누군가가 나를 도울 수

희망, 모든

+3

그러면 원하는 출력이 어떻게 생겼을까요? – fedorqui

답변

0

위치 (42)에서 "foo는"을 검색하는 가장 좋은 : 당신은 당신의 입력에이 여러 번 같은 명령을 실행할 수 있습니다

egrep '^.{42}foo' 

:

egrep '^.{42}foo' inputfile.txt > lineswithfoo.txt 
egrep '^.{42}bar' inputfile.txt > lineswithbar.txt 
... 

또는 루프로서 :

for pattern in foo bar qux; do 
    egrep "^.{42}$pattern" inputfile.txt > lineswith$pattern.txt 
done 
0

awk 하위 문자열 작업이 여기에서 유용 할 수 있습니다. 이 라인을 따라 뭔가 :

awk '{ x=substr($0, 42, 3); print > "output" x ".txt"}' 

이 (0 기반 인덱스 기억) 위치에 42을 시작하는 각 라인의 3 문자 문자열을, 그 문자열의 출력 파일 이름 "outputXYZ.txt"을 형성 할 , 그 라인을 추가하십시오.

관련 문제