用0填充空列

时间:2014-06-27 08:50:23

标签: awk

我有一个这种结构的文件:

1   11827796    2   300 T:0.96  C:0.04  T 
1   11827816    1   300 G:1 G

对于文件中有6列而不是7列的行,我想在第5列和第6列之间插入一个零,所以有这个输出:

1   11827796    2   300 T:0.96  C:0.04  T
1   11827816    1   300 G:1     0   G

关于如何用awk实现这一点的任何想法。

提前多多感谢。

2 个答案:

答案 0 :(得分:1)

这里有一个解决方案:

awk 'NF==6 {$5=$5" 0"}1' file |column -t
1  11827796  2  300  T:0.96  C:0.04  T
1  11827816  1  300  G:1     0       G

如果只有6个字段,请添加0并修复列宽。

答案 1 :(得分:1)

假设你的"列"是制表符分隔的,看起来像是:

$ awk 'NF<7{sub(/[^\t]+$/,"0\t&")}1' file
1       11827796        2       300     T:0.96  C:0.04  T
1       11827816        1       300     G:1     0       G