2

タブ区切りファイルの 11 列目の値を取得したいと考えています。この戻り値は、セパレータとして : を使用して連結された複数の値です。

example result from cat myFile | cut -d':'    :
.:7:.:2:100:.

このファイルを : 区切り記号で分割し、2 番目の値を取得します。これはで行うことができますcut -d':' -f2

私の質問: ファイル内の 11 列目の 2 番目の部分に 5 以上の値を持つすべての行を返すステートメントを作成するにはどうすればよいですか?

入力ファイル (2 行):

chr1    4396745 bnd_549 a   a[chr9:136249370[   100 PASS    SVTYPE=BND;MATEID=bnd_550;EVENT=transl_inter_1022;GENE=;    GT:AD:DP:SS:SSC:BQ  .:.:.:.:.:. .:7:.:2:100:.
chr1    6315381 bnd_551 c   ]chr9:68720182]c    100 PASS    SVTYPE=BND;MATEID=bnd_552;EVENT=transl_inter_9346;GENE=;    GT:AD:DP:SS:SSC:BQ  .:.:.:.:.:. .:3:.:2:100:.

期待される出力:

chr1    4396745 bnd_549 a   a[chr9:136249370[   100 PASS    SVTYPE=BND;MATEID=bnd_550;EVENT=transl_inter_1022;GENE=;    GT:AD:DP:SS:SSC:BQ  .:.:.:.:.:. .:7:.:2:100:.

(awk -F: '$11>=5' example.sorted.vcf) を使用した出力: 出力なし

4

2 に答える 2

4

これは動作するはずです (テストされていませんが、入力と期待される出力を提供してください):

awk '{split($11,ary,/:/); if(ary[2]>=5) print}' myFile
于 2013-07-22T13:52:36.493 に答える
0

フィールドセパレータとして空白またはコロンを使用することもできます。

awk -F ':|[[:blank:]]+' '$23 > 5' filename
于 2013-07-22T15:13:52.663 に答える