Bonjour
Je cherche des idées pour améliorer (rapidité d'exécution) mon script bash . Il permet de traiter de gros fichiers. Avez vous des idées?
Le code
Merci
Tio
Bonjour
Je cherche des idées pour améliorer (rapidité d'exécution) mon script bash . Il permet de traiter de gros fichiers. Avez vous des idées?
Le code
Merci
Tio
Bonjour Tio,
Tu peux ne pas utiliser :Envoyé par Tiolebucheron
echo devant les variables du style ${line:n:m}
echo $var | sed, mais sed <<<"$var" (qui ne sont d'ailleurs pas indispensables, des remplacements de paramètres successifs de la même variable
une seule instance de sed : sed 's/anc/nouv/; s/anc2/nouv2/'
awk | sed : c'est soit awk soit sed, mais pas les deux
bc pour calculer des entiers
::
bref, limiter au strict minimum l'utilisation de programmes externes.
-
les tests depuis $l1 jusqu'à $ville, peuvent réaliser dans une boucle for. Ça ne fera pas ganer de temps mais de l'espace...
-
une petite question : à quoi servent tous ces guillemets ?
Oui en effet il y a matière a améliorer. Mes cours de shel remonte à 10 ans maintenant, un peu rouillé le gars.
Pour les guillemets une fois qu'une commande fonctionne j'ai reporté la même chose partout. par contre j'ai par trop compris l'histoire du for!!!
Je serai a mon bureau dans une heure je fais dejà les premières modifications et reposte le nouveau code.
MErci pour l'aide
tio
Le test [ -z "$ville" ] || [ "$ville" = "" ] fait 2 appels. Il vaut mieux le remplacer par un connecteur OR interne => [ -z "$ville" -o "$ville" = "" ]
Toutetois c'est inutile vu que l'option -z teste variable vide donc l'égalité avec rien est implicite => [ -z "$ville" ] est bien suffisant
Effectivement tous ces guillemets sont inutiles => ville="'$ville'" marche parfaitement
Moi on plus. Peut-être un for x in `cat fichier` mais personnellement j'apprécie pas trop cette syntaxe car si le fichier contient des espaces dans ses mots, le for traitera chaque mot avec comme 2 éléments séparés. Je préfère de loin la syntaxe cat fichier |while read x
Mon Tutoriel sur la programmation «Python»
Mon Tutoriel sur la programmation «Shell»
Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
Et on poste ses codes entre balises [code] et [/code]
Re,
Je rencontre des difficultés pour enlever l'echo de cet commande
majic3=$(echo "${line:18:6}" | sed -e 's/[[:blank:]]*$//')
Pouvez-vous m'aider?
Merci
PS : 2 seconde de gagner déjà (sur un test de 80 lignes traitées)
Si la variable ne contient pas d'espaces, peut-être
Code : Sélectionner tout - Visualiser dans une fenêtre à part majic3=${line:18:6}; majic3=${majic3%% *}
Partager