|
|
|
|
Bonjour,
J'ai un fichier à nombre de colonnes variable, et une dizaine de miliers de lignes. Je voudrais pouvoir "compléter" les colonnes par des zéros pour qu'elles aient toutes la même taille, soit 400. Si cela est trop complexe à réaliser, je peux me satisfaire au pire de remplacer, sachant que j'ai au moins 385 colonnes, toutes les colonnes à partir de 385 jusqu'à 400 par des zéros.
Exemple :
... 0 3 6 1 0 (colonne 400)
... 0 0
... 2 1 8
et je veux :
... 0 3 6 1 0
... 0 0 0 0 0
... 2 1 8 0 0
Quelqu'un aurait-il une idée ??? Merci !
Tibo.
Configuration: Linux Firefox 2.0.0.11
Salut,
sed -e ':boucle;s/^.\{1,800\}$/& 0/; t boucle' fichierSi c'est concluant, tu peux soit redirigé la sortie (> fichier.sortie), soit si tu as une version de GNU sed 4.0 ou supérieure utiliser le switch "-i".
Un petit exemple : $ cat plop
1 2 3 4 5 6 7 8 9
1 5 6 3
2 5 9 7 8
2 6 0 1 1 5
9 5 1
$ sed -e ':boucle;s/^.\{1,20\}$/& 0/; t boucle' plop
1 2 3 4 5 6 7 8 9 0 0
1 5 6 3 0 0 0 0 0 0 0
2 5 9 7 8 0 0 0 0 0 0
2 6 0 1 1 5 0 0 0 0 0
9 5 1 0 0 0 0 0 0 0 0;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
Essaye ça alors : $ cat plop
1er en-tête
1 2 3 4 5 6 7 8 9
2ème en-tête
1 5 6 3
3ème en-tête
2 5 9 7 8
4ème en-tête
2 6 0 1 1 5
5ème en-tête
9 5 1
$ sed -e '2~2 {:boucle;s/^.\{1,20\}$/& 0/; t boucle}' plop
1er en-tête
1 2 3 4 5 6 7 8 9 0 0
2ème en-tête
1 5 6 3 0 0 0 0 0 0 0
3ème en-tête
2 5 9 7 8 0 0 0 0 0 0
4ème en-tête
2 6 0 1 1 5 0 0 0 0 0
5ème en-tête
9 5 1 0 0 0 0 0 0 0 0;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |
En fait ça me fait des choses bizarres cette affaire, exemple :
|
Ah merci bien !!! Juste un détail encore que je suis entrain d'essayer de régler, c'est que je ne voulais pas toucher aux chiffres qui suivent mes "Output x", et seulement mes "Input x"... J'y retourne j'y retourne, mais merci beaucoup tes réponses sont toujours rapides claires et efficaces c'est génial ! |
$ cat bar
#Input 1
0 0 0 0 1 0 0 0 0 0 2
#Output 1
1 0 0 0 0 0 0 0 0 0 0 0
#Input 1
0 0 0 0 1 0 0 0 0 0 2
#Output 1
1 0 0 0 0 0 0 0 0
#Input 1
0 0 0 0 1 0 0 0 0 0 2
#Output 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0
$ sed -e '/^#Input/ {n; :boucle;s/^.\{1,30\}$/& 0/; t boucle}' bar
#Input 1
0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0
#Output 1
1 0 0 0 0 0 0 0 0 0 0 0
#Input 1
0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0
#Output 1
1 0 0 0 0 0 0 0 0
#Input 1
0 0 0 0 1 0 0 0 0 0 2 0 0 0 0 0
#Output 1
1 0 0 0 0 0 0 0 0 0 0 0 0 0;-))
Z'@+...che. JP : Zen, my Nuggets ! ;-) Le savoir n'est bon que s'il est partagé. |