copier et coller une ligne n fois en fonction du nombre correspondant dans une cellule de cette ligne

Disons que j’ai un fichier csv avec “,” comme séparateur de champ dans ce format:

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 

Ce que je veux faire, c’est copier et coller chaque ligne n fois n est le nombre dans la première colonne multiplié par 100. Donc, la première ligne apparaîtrait 5 fois, la deuxième ligne 2 fois, la troisième ligne 4 fois, etc.

Sortie désirée:

 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 

Le fichier de données réel comporte plus de 2000 lignes et le nombre décimal dans la première ligne est compris entre 0,03 (plus de décimales) et 0,7 (plus de décimales). Les nombres doivent être arrondis car vous ne pouvez pas copier et coller une ligne 2,5 fois. Donc, quelque chose comme .25 irait à .3 et .24 irait à .2

Avec awk :

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

Dans la solution ci-dessus, 0,0234 et 0,0236 seraient imprimées 23 fois. c'est ce que tu veux?

Si vous avez besoin de valeurs arrondies, je suggère d'utiliser quelque chose comme ceci:

 awk -F, '{for(i=0;i 

Merci Ed Morton !