나는 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