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
最重要的信息隐藏在第 9 列(最长的一列),就在第 4 列和第 6 列之间:
。例如:
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解决方案:
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