다음과 같은 입력이 있습니다.
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
split
awk의 함수는 정규식을 구분 기호로 사용하므로 다음을 모두 포함하는 정규식을 사용할 수 있습니다 .;
,
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