列から文字で区切られた情報を抽出するには?

列から文字で区切られた情報を抽出するには?

data次のファイルがあります。

head data

19  54240283    .   T   C   .   .   .    188,18:208:14:102:18:189:209:37.7222:37.4681:9:139:9:50:50.8889:40.3545:919.145:640.562:0
1   103020      .   A   C   .   .   .    1,2:3:2:2:2:2:4:38:38:2:2:0:0:46.5:28:0.5:162:0
2   8797402     .   G   A   .   .   .    0,3:3:3:0:3:0:3:38:0:0:3:0:38.3333:840.056:0

最も重要な情報は、4列と6列の間の9列(最も長い列)に隠されています:。たとえば、

19  54240283    .   T   C   .   .   .    18:189
1   103020      .   A   C   .   .   .    2:2
2   8797402     .   G   A   .   .   .    3:0

最後に、これを抽出し、そのための新しい列を作成したいと思います。例えば、

19  54240283    .   T   C   .   .   .    18    189
1   103020      .   A   C   .   .   .    2     2
2   8797402     .   G   A   .   .   .    3     0

誰もがこれを行う方法を理解するのに役立ちますか?ありがとうございます!

ベストアンサー1

アッ解決策:

awk -F'[[:space:]]+|:' '{ print $1,$2,$3,$4,$5,$6,$7,$8,$13,$14 }' data | column -t

出力:

19  54240283  .  T  C  .  .  .  18  189
1   103020    .  A  C  .  .  .  2   2
2   8797402   .  G  A  .  .  .  3   0

  • -F'[[:space:]]+|:'- スペースは:フィールド区切り文字として扱われます。

おすすめ記事