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:]]+|:'
- スペースは:
フィールド区切り文字として扱われます。
答え2
perl -pe 's|\d+,(\S+)$|join "\t", (split /:/, $1)[4,5]|e' data
結果
19 54240283 . T C . . . 18 189
1 103020 . A C . . . 2 2
2 8797402 . G A . . . 3 0