awk 명령을 사용하여 특정 열 값을 가진 행 추출

awk 명령을 사용하여 특정 열 값을 가진 행 추출

1/1로 시작하는 모든 줄을 추출하고 싶습니다"12345" 열에서그리고 awk 명령을 사용하여 이 행을 새 파일(-> Newfile.vcf.gz)에 넣고 첫 번째 file.vcf.gz는 변경되지 않은 채로 둡니다. 내 파일은 file.vcf.gz입니다. 먼저 다른 파일로 변환해야 하는지 알려주세요.

예를 들어

#CHROM      POS         ALT     12345   
1           345632      T       0/1:4,4:8:99:105,0,106
4           032184      C       1/1:46,9:55:99:99,0,1222
6           843290      A       0/1:67,20:87:99:336,0,1641

예상되는 결과

4           032184      C       1/1:46,9:55:99:99,0,1222

답변1

awk에서는 정규식을 사용할 수 있습니다. /^1\/1/열 4가 다음으로 시작하면 일치합니다 1/1.

zcat file.vcf.gz | awk '$4 ~ /^1\/1/ {print}' | gzip -c > new.vcf.gz

하지만 /4열에만 나타날 수 있다면 그냥 사용하면 되지 않을까요 grep?

zgrep "1/1" file.vcf.gz | gzip  -c > new.vcf.gz

관련 정보