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総額は必要ありません|)。別の区切り文字を使用して2回分割することもできます。

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

関連情報