다음 형식(여러 열)의 탭으로 구분된 파일이 있습니다.
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT NORMAL
1 22 . C A . PASS aa;bb;cc ee:ff:rr:dd xx:vv:yy:zz
1 34 . G T . PASS aa;bb;cc ee:ff:rr:dd xx:vv:yy:zz
1 56 . C G . PASS aa;bb;cc ee:ff:rr:dd xx:vv:yy:zz
원하는 출력:
1 22 C A . zz vv/yy cc
1 34 G T . zz vv/yy cc
1 56 C G . zz vv/yy cc
답변1
정규식을 필드 구분 기호로 사용하여 원하는 결과를 얻을 수 있습니다. 제공한 예에서 :
와 가 필드 9와 10에 대한 하위 필드 구분 기호라고 가정하면 ;
다음은 특정 필드와 하위 필드를 인쇄하는 방법에 대한 예입니다.
$ awk -F'[\t;:]' '{ print $1,$2,$4,$5,$18, $10, $16, $22 }' file
1 1278229 C A . SSC=7 FREQ 40%
하위 필드에 대한 현재 설명은 불분명하고 예제 출력은 훨씬 덜 명확하지만 원하는 출력을 얻으려면 내 예제를 수정해야 합니다.
업데이트: 최종 제공된 입력을 기반으로 다음 awk
명령은 샘플 출력을 생성합니다.
$ awk -v FS='[\t;:]' -v OFS='\t' 'NR > 1 { print $1, $2, $4, $5, $6, $18, $16"/"$17, $10 }' infile
1 22 C A . zz vv/yy cc
1 34 G T . zz vv/yy cc
1 56 C G . zz vv/yy cc
$