复制&根据该行内单元格中的相应数字粘贴一行n次

时间:2015-06-01 17:39:19

标签: unix awk

假设我有一个带有“,”的csv文件作为此格式的字段分隔符:

0.051278,1,0,0,4,0,1,2
0.024788,1,7,0,0,0,0,0
0.042316,1,0,0,1,0,0,0

我想做的是复制并粘贴每一行n次n是第一列中的数字乘以100.因此第一行将出现5次,第二行出现2次,第三行出现4次,并且等等。

期望的输出:

0.051278,1,0,0,4,0,1,2
0.051278,1,0,0,4,0,1,2
0.051278,1,0,0,4,0,1,2
0.051278,1,0,0,4,0,1,2
0.051278,1,0,0,4,0,1,2
0.024788,1,7,0,0,0,0,0
0.024788,1,7,0,0,0,0,0
0.042316,1,0,0,1,0,0,0
0.042316,1,0,0,1,0,0,0
0.042316,1,0,0,1,0,0,0
0.042316,1,0,0,1,0,0,0

实际数据文件有超过2000行,第一行中的十进制数范围从.03(更多小数位)到.7(更多小数位)。数字必须舍入,因为您无法复制和粘贴行2.5次。所以,像.25这样的东西会转到.3而.24会转到.2

1 个答案:

答案 0 :(得分:4)

使用awk

awk -F, '{for(i=0;i<$1*100;i++)print}' input.txt

在上述解决方案中,0.0234和0.0236将打印23次。这是你想要的吗?

如果你需要舍入值,我建议使用这样的东西:

awk -F, '{for(i=0;i<int($1*100+.5);i++)print}' input.txt

谢谢Ed Morton