awk를 구분 기호로 나누고 첫 번째 항목을 가져옵니다.

awk를 구분 기호로 나누고 첫 번째 항목을 가져옵니다.

다음과 같은 입력이 있습니다.

chr1    28374C       T       0.0     PASS    AF=0.730769;AO=19;DP=26;
chr1    29631A       G       0.0     PASS    AF=0.6;AO=6;DP=10;
chr1    39322CAC    ACC      0.0     PASS    AF=0.266667,0.266667;AO=4,4;DP=16; 

첫 번째 AF=[0-9]를 사용하고 싶습니다. ";"으로 열을 구분했지만 첫 번째 항목만 가져오는 방법을 모르겠습니다. 그래서 나는 awk를 사용했습니다.

cat file | awk '{split($6,a,";"); print a[1]}' 

이것은 만든다:

AF=0.730769
AF=0.6
AF=0.266667,0.266667

하지만 나는 단지 다음을 원합니다:

AF=0.730769
AF=0.6
AF=0.266667

답변1

splitawk의 함수는 정규식을 구분 기호로 사용하므로 다음을 모두 포함하는 정규식을 사용할 수 있습니다 .;,

awk '{split($6,a,/[;,]/); print a[1]}' file

( cat총액이 필요 하지 않음 |). 다른 구분 기호를 사용하여 두 번 분할할 수도 있습니다.

awk '{split($6,a,/;/); split(a[1],b,/,/); print b[1]}' file

답변2

$ awk -F'[[:space:],;]+' '{print $6}' file
AF=0.730769
AF=0.6
AF=0.266667

관련 정보