Multiplier fichier vi avec un shell
Résolu/Fermé
A voir également:
- Multiplier fichier vi avec un shell
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir un fichier .bin - Guide
- Fichier host - Guide
7 réponses
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 avril 2008 à 13:19
22 avril 2008 à 13:19
Salut,
Rien compris ! :-\
vi c'est un éditeur pas un fichier !!!
Rien compris ! :-\
vi c'est un éditeur pas un fichier !!!
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 avril 2008 à 13:39
22 avril 2008 à 13:39
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?
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 avril 2008 à 14:01
22 avril 2008 à 14:01
while read line; do echo "$line x 2 = " $(echo "$line * 2" | bc);done < plop;-))
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 avril 2008 à 14:18
22 avril 2008 à 14:18
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
lami20j
Messages postés
21331
Date d'inscription
jeudi 4 novembre 2004
Statut
Modérateur, Contributeur sécurité
Dernière intervention
30 octobre 2019
3 569
22 avril 2008 à 14:48
22 avril 2008 à 14:48
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
jipicy
Messages postés
40842
Date d'inscription
jeudi 28 août 2003
Statut
Modérateur
Dernière intervention
10 août 2020
4 897
22 avril 2008 à 14:49
22 avril 2008 à 14:49
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
22 avril 2008 à 13:27
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?