假设我有一个带有“,”的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
答案 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!