![awk를 구분 기호로 나누고 첫 번째 항목을 가져옵니다.](https://linux55.com/image/193807/awk%EB%A5%BC%20%EA%B5%AC%EB%B6%84%20%EA%B8%B0%ED%98%B8%EB%A1%9C%20%EB%82%98%EB%88%84%EA%B3%A0%20%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EA%B0%80%EC%A0%B8%EC%98%B5%EB%8B%88%EB%8B%A4..png)
다음과 같은 입력이 있습니다.
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