ATCG가 아닌 VI의 라인 찾기

ATCG가 아닌 VI의 라인 찾기

나는 문자 A, T, C, G만 포함해야 하는 약 500만 줄 길이의 게놈 데이터 파일을 가지고 있습니다. 문제는 파일 크기가 얼마나 되어야 하는지는 알지만 그보다 약간 크다는 것입니다. 이는 분석에 문제가 발생했거나 일부 행에 게놈 데이터가 아닌 다른 내용이 포함되어 있음을 의미합니다.

A, T, C, G 이외의 행을 찾는 방법이 있나요? 파일의 특성상 다른 문자, 공백, 숫자, 기호가 나타나서는 안됩니다. 기호별로 기호를 검색했기 때문에 더 쉬운 방법이 있기를 바랍니다.

답변1

우선, 편집기에서 파일을 열고 싶지 않을 것입니다(이 방법으로 편집하기에는 너무 큽니다).

반대로 그냥 원하시면확인하다파일에 A를 제외한 내용이 포함되어 있으면 다음을 사용할 수 있습니다.TCG

grep '[^ATCG]' filename

그러면 이 네 문자 이외의 내용이 포함된 모든 줄이 반환됩니다.

네가 원한다면삭제파일에 있는 이러한 문자는 다음과 같습니다.

tr -c -d 'ATCG\n' <filename >newfilename

(이것이 파일을 "수정"하는 올바른 방법인지는 모르겠습니다)

이렇게 하면 파일에서 이 네 문자 중 하나가 아닌 모든 문자가 제거되고 개행 문자( \n)도 보존됩니다. 편집된 파일은 에 기록됩니다 newfilename.

파일에 무언가를 추가한 것이 시스템 오류인 경우 sed또는 를 통해 수정할 수 있지만 awk아직 데이터가 어떻게 보이는지 알 수 없습니다.


vi파일을 열거나 vim명령을 실행하면

/[^ATCG]

A, T또는가 아닌 편집 버퍼의 다음 문자가 C발견 됩니다 G.

그리고 :%s/[^ATCG]//g모두 삭제하겠습니다.

답변2

제목에 집중했어요

ATCG가 아닌 VI의 라인 찾기

저는 이것을 "마지막 줄 모드"라고 불리는 VI 편집기에서 테스트했습니다.

:%!tr -c -d 'ATCG\n

:명령줄 모드로 가서 %전체 파일을 범위로 일치시키고 !@Kusalananda가 쓴 것과 동일한 외부 명령으로 범위를 필터링합니다. :)tr -c -d 'ATCG\n

관련 정보