변화하는 줄을 표시하는 방법을 선택하세요.

변화하는 줄을 표시하는 방법을 선택하세요.

나는 80개의 게놈과 5개의 염색체를 포함하는 거대한 파일을 가지고 있습니다. 하나의 염색체(예: 1)에서 선만 선택하고 SNP 변이를 나타내는 위치만 선택하는 간단한 방법이 있는지 궁금합니다.

1   180754  GGGGGGGCC   
1   180755  CCCCCCCCC

1   180756  CCTCCCCTC   
1   180757  AAAAAAAAA   
1   180759  TTTTTTTTT   
3   7874113 TTTTTTTTT   
3   7874114 GGGGGGGGG   
3   7874115 GGGGGGGGG   
3   7874116 GGGGGGGGG

이것이 내가 궁극적으로 얻고 싶은 것입니다:

1   180754  GGGGGGGC        
1   180756  CCTCCCCT    

답변1

귀하의 예를 들어:

egrep '1 [[:digit:]]+ (GGGGGGGC|CCTCCCCT)' file

--- 편집: 따라서 다음을 시도해 보세요.

egrep -v '([A-Z])\1{8}' data

답변2

제공한 샘플 데이터를 기반으로 을 사용하여 이 작업을 수행할 수 있습니다 grep. 뉴클레오티드의 유일한 유효한 값이 A, C, G, T라는 점을 고려하면 이러한 값만 포함하는 문자 집합을 만들 수 있습니다.

$ grep -Ev '([ACGT])\1{8}|^$' sample.txt 
1   180754  GGGGGGGCC
1   180756  CCTCCCCTC

이는 단일 유형의 모든 결과를 무시함으로써 수행됩니다. 정규식은 [ACGT]\1{8}AAAAAAAA, CCCCCCCC 등 형식의 모든 문자열과 일치합니다. 일치의 반전은 -v스위치를 통해 수행됩니다.

   -v, --invert-match
        Invert the sense of matching, to select non-matching lines.  (-v 
        is specified by POSIX.)

-E인수가 위의 인수와 일치하도록 grep정규식을 사용 [ACGT]\1{8}하거나 빈 줄( ^$)을 사용하세요.

   -E, --extended-regexp
        Interpret PATTERN as an extended regular expression (ERE, see 
        below).  (-E is specified by POSIX.)

두 매개변수 사이의 수직 막대(일명 파이프( ))는 |이를 다음과 같이 만듭니다.또는그 경기상황.

예를 들어 grep -Ev "arg1|arg2" <file>. 시간이 좀 arg1걸릴 것입니다 .[ACGT]\1{8}arg2^$

답변3

정확히 무엇을 요구하시는지 잘 모르겠습니다. (귀하의 요구 사항을 설명해 주시면 도움이 될 것입니다.)어휘적으로대신에의미적으로) 하지만

sed -r sed -r '/^[0-9]+[[:space:]]+[0-9]+[[:space:]]+(.)\1+\>/d'

세 번째 공백으로 구분된 필드가 동일한 초기 문자의 반복으로 완전히 구성된 줄은 제거됩니다(즉, 인쇄되지 않음).

$ sed -r '/^[0-9]+[[:space:]]+[0-9]+[[:space:]]+(.)\1+\>/d' genomes.txt
1   180754  GGGGGGGCC   

1   180756  CCTCCCCTC   

게놈 필드에만 대문자가 포함될 수 있다는 것을 알고 있다면 더 간단한 표현을 사용하는 것이 안전할 것입니다.

sed -r '/\<([A-Z])\1+\>/d' genomes.txt

관련 정보