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
Configuration: Linux Konqueror 3.5
7 réponses
-
Salut,
Rien compris ! :-\
vi c'est un éditeur pas un fichier !!!
-
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?
-
-
while read line; do echo "$line x 2 = " $(echo "$line * 2" | bc);done < plop
;-))
-
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" :[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?
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Salut,
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
-
Un seul print suffit ;-))
sed 's/\./,/g' test1 | awk '{ print $1, $2, ($3*2), ($4*2) }' | sed 's/,/\./g'PS. Ne l'écoute pas, Perl c'est pour les faignants ;-DDD
-