특정 조건에서 파일에서 줄을 추출하는 방법

특정 조건에서 파일에서 줄을 추출하는 방법

문서:

chromosome  position  ref  alt 
chr1          1398     A    T 
chr1          2980     A    C 
chr2          3323     C    T,A
chr2          3749     T    G
chr3          5251     C    T,G
chr3          9990     G    C,T
chr4          10345    T    G 

4열에 쉼표로 구분된 문자가 2개 이상인 경우 전체 행을 추출해야 합니다.

예상되는 출력은 다음과 같습니다.

chr2          3323     C    T,A
chr3          5251     C    T,G
chr3          9990     G    C,T 

답변1

이 문제를 보는 몇 가지 다른 방법이 있습니다.

방법 1

쉼표로 구분된 문자가 2개 이상 포함된 줄에만 관심이 있으므로 grep쉼표만 사용하면 됩니다.

$ grep "," sample.txt 
chr2          3323     C    T,A
chr3          5251     C    T,G
chr3          9990     G    C,T

방법 #2

사용할 수 있는 grepPCRE 도구 . 여기서 grep일치를 위해 Perl의 정규식 엔진을 사용할 수 있습니다. 이것은 매우 강력하며 Perl로 할 수 있는 많은 일을 할 수 있게 해줍니다 grep.

느슨하게 정의됨

$ grep -P "(\w,)+" sample.txt 

엄격한 정의

$ grep -P '\w+\d\s+\d+\s+\w\s+(\w,)+' sample.txt 

방법 #3

사용 awk. 이는 쉼표( )가 있는 줄만 의미가 있다는 사실을 다시 활용하므로 ,해당 줄을 찾아 인쇄합니다.

느슨하게 정의됨

$ awk '/,/{print}' sample.txt 

더 엄격한 정의

$ awk '/([[:alpha:]])+,[[:alpha:]]/{print}' sample.txt 

더욱 엄격한 정의

$ awk '$4 ~ /([[:alpha:]])+,[[:alpha:]]/{print}' sample.txt

이 명령은 네 번째 열의 내용을 보고 문자, 쉼표, 또 다른 문자인지 확인합니다.

더욱 엄격한 정의

$ awk '$4 ~ /([GATC])+,[GATC]/{print}' sample.txt 

이는 G, A, T 또는 C만 찾고 그 뒤에 쉼표가 오고 또 다른 G, A, T 또는 C가옵니다.

답변2

perl -ane 'print if($F[3] =~ /^\w,\w/$);' file

-nPerl에게 infile을 한 번에 한 줄씩 처리하고 각 줄을 에 지정된 명령에 전달하도록 지시합니다 -e. -aPerl에게 필드 구분 기호(기본적으로 공백) 주위의 각 줄을 확장하고 이를 이름이 지정된 배열에 할당하도록 지시합니다 @F. 결과적으로 우리는 각 행을 처리하고 이를 사용하여 $F[n]행의 n번째 요소를 참조할 수 있습니다.

$F[3]그런 다음 필드 4 에 문자열의 시작 ^, 단어 문자 \w, 쉼표, 다른 단어 문자 \w, 문자열의 끝이 포함되어 있는지 테스트합니다 $. 성공하면 print오프라인 상태입니다.

이러한 "단어 문자"가 항상 시토신, 아데닌, 구아닌 및 티민인 경우 다음을 사용하여 더 명확하게 만들 수 있습니다.

perl -ane 'print if($F[3] =~ /^[GATC],[GATC]$/);' file

답변3

또 다른 awk 솔루션.

awk 'length($4) > 2 && $4 ~ /^([^,],)+[^,]$/' file_name

테스트에는 nawk를 사용하고 gawk와 함께 사용할 수도 있습니다. 이는 A,T,G,C,Z,Q,R과 일치합니다.

마찬가지로 ATGC와 일치하는 경우:

awk 'length($4) > 2 && $4 ~ /([ATGC],)+[ATGC]/' file_name

답변4

간단한 awk문장:

awk '$4 ~ ","' file

관련 정보