서로 다른 구분 기호를 사용하여 파일의 서로 다른 열을 분할하고 그 중 일부만 인쇄

서로 다른 구분 기호를 사용하여 파일의 서로 다른 열을 분할하고 그 중 일부만 인쇄

다음 형식(여러 열)의 탭으로 구분된 파일이 있습니다.

#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
$ 

관련 정보