Multiplier fichier vi avec un shell
Résolu
jess75
-
jess75 -
jess75 -
Bonjour,
j'ai une liste de chiffres (en colonne) dans un fichier vi.
j'aimerais tous les multiplier et créer ainsi un nouveau fichier.
je pensais le faire grâce à un shell.
Est-ce possible?
j'arrive à copier élément par élément mais pas à multiplier
merci d'avance
j'ai une liste de chiffres (en colonne) dans un fichier vi.
j'aimerais tous les multiplier et créer ainsi un nouveau fichier.
je pensais le faire grâce à un shell.
Est-ce possible?
j'arrive à copier élément par élément mais pas à multiplier
merci d'avance
A voir également:
- Multiplier fichier vi avec un shell
- Fichier bin - Guide
- Comment réduire la taille d'un fichier - Guide
- Comment ouvrir un fichier epub ? - Guide
- Fichier rar - Guide
- Classic shell - Télécharger - Personnalisation
7 réponses
Oui ;-))
[jp@MDK-2008 trash]$ cat plop 1 2 3 4 5 6 7 8 9 [jp@MDK-2008 trash]$ while read line; do echo "$line x 2 = $((line * 2))";done < plop 1 x 2 = 2 2 x 2 = 4 3 x 2 = 6 4 x 2 = 8 5 x 2 = 10 6 x 2 = 12 7 x 2 = 14 8 x 2 = 16 9 x 2 = 18 [jp@MDK-2008 trash]$;-))
merci
ça marche presque...
il ne veut pas multiplier mes décimaux dont le séparateur est un point,
ça marche si ce sont des virgules
@jess> cat test1
0.25
0.375
0.5
0.625
0.75
@jess> while read line; do echo "$line x 2 = $((line * 2))";done < test1
ksh: 0.25: unexpected `.'
par contre
@jess> while read line; do echo "$line x 2 = $((line * 2))";done < test1
0,25 x 2 = 50
0,375 x 2 = 750
0,5 x 2 = 10
0,625 x 2 = 1250
0,75 x 2 = 150
je vais être obligée de transformer tous les points en virgules?
ça marche presque...
il ne veut pas multiplier mes décimaux dont le séparateur est un point,
ça marche si ce sont des virgules
@jess> cat test1
0.25
0.375
0.5
0.625
0.75
@jess> while read line; do echo "$line x 2 = $((line * 2))";done < test1
ksh: 0.25: unexpected `.'
par contre
@jess> while read line; do echo "$line x 2 = $((line * 2))";done < test1
0,25 x 2 = 50
0,375 x 2 = 750
0,5 x 2 = 10
0,625 x 2 = 1250
0,75 x 2 = 150
je vais être obligée de transformer tous les points en virgules?
Oui avec "awk" c'est relativement simple, à part que "awk" ne veut pas de point comme séparateur décimal ;-((
Voici une solution avec "sed" et "awk" :
Voici une solution avec "sed" et "awk" :
[jp@MDK-2008 trash]$ cat plop A1 0.25 0.375 A1 0.375 0.25 A1 0.5 0.5 A1 0.625 0.625 A1 0.75 0.75 [jp@MDK-2008 trash]$ sed 's/\./,/g' plop | awk '{ print $1, ($2*2), ($3*2) }' | sed 's/,/\./g' A1 0.5 0.75 A1 0.75 0.5 A1 1 1 A1 1.25 1.25 A1 1.5 1.5 [jp@MDK-2008 trash]$;-))
je touche à la fin de mon probleme
j'ai essayé plusieurs fois mais il y a toujours une erreur
j'ai verifié les espaces etc
@jess> cat test1
A1 core 0.25 0.375 0.25
A1 core 0.375 0.25 0.5
A1 core 0.5 0.5 0.75
A1 core 0.625 0.625 0.375
A1 core 0.75 0.75 0.625
@jess> sed 's/\./,/g' test1 | awk '{ print $1, print $2, ($3*2), ($4*2) }' | sed 's/,/\./g'
awk: { print $1, print $2, ($3*2), ($4*2) }
awk: ^ syntax error
awk n'accepterait qu'un seul print?
j'ai essayé plusieurs fois mais il y a toujours une erreur
j'ai verifié les espaces etc
@jess> cat test1
A1 core 0.25 0.375 0.25
A1 core 0.375 0.25 0.5
A1 core 0.5 0.5 0.75
A1 core 0.625 0.625 0.375
A1 core 0.75 0.75 0.625
@jess> sed 's/\./,/g' test1 | awk '{ print $1, print $2, ($3*2), ($4*2) }' | sed 's/,/\./g'
awk: { print $1, print $2, ($3*2), ($4*2) }
awk: ^ syntax error
awk n'accepterait qu'un seul print?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut,
avec perl ;-)
avec perl ;-)
lami20j@debian:~/trash$ cat plop A1 0.25 0.375 A1 0.375 0.25 A1 0.5 0.5 A1 0.625 0.625 A1 0.75 0.75 lami20j@debian:~/trash$ perl -ne '$,=" ";($x,$y,$z)=split /\s+/,$_;print $x,2* $y,2*$z,"\n"' plop A1 0.5 0.75 A1 0.75 0.5 A1 1 1 A1 1.25 1.25 A1 1.5 1.5 lami20j@debian:~/trash$ perl -ne 's/(.*?)\s+(.*?)\s+(.*)/$1 ." ".2*$2 ." ".2*$3/eg;print' plop A1 0.5 0.75 A1 0.75 0.5 A1 1 1 A1 1.25 1.25 A1 1.5 1.5
je vais essayer d'être plus claire
j'ai une colonne rempli de chiffres
je veux multiplier cette colonne
est-ce que je peux le faire avec un shell?