次の形式(複数列)のタブ区切りファイルがあります。
#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
$