Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 25/04/2019, à 12:04

baloovsrayman

[Résolut]SED?: récupéré, calculer et remplacer par le résultat [bash]

Bonjour ,

Je fait la découverte un peu la commande sed qui est assez complexe:

J'aimerais quelle modifie un fichier assez simple organiser comme cela :
texte , 1325
autretexte , 3245
ect...
Je lui demande la chose suivante

récupérer le nombre faire un calcul avec ( ici c'est pouvoir mettre un pourcentage ) et le replacer ensuite au même endroit 

exemple

texte , 15
autretexte , 30

voilas ma fonction ( qui ne marche pas bien entendu sad )

percent_calc(){
	
	sum_carac=`wc -m "$1"`
	sum_carac=${sum_carac//${1}/}
	sum_carac=$(( sum_carac / 100 ))
	echo "$sum_carac"
       	
	sed "s/^[0-9]+([0-9])?+/$(( & / '${sum_carac}'))/e" <<< ${1}

}

Et voilas de quoi il se plaint :
39401
ligne 229: & / '39401' : erreur de syntaxe : opérande attendu (le symbole erroné est « & / '39401' »)



D'avance merci  pour toute aide

Dernière modification par baloovsrayman (Le 25/04/2019, à 21:02)

Hors ligne

#2 Le 25/04/2019, à 18:05

Hizoka

Re : [Résolut]SED?: récupéré, calculer et remplacer par le résultat [bash]

Salut

sum_carac=`wc -m "$1"`
=>
sum_carac=$(wc -m "$1")

Commençons par respecter les bonnes pratiques.

Je pense que lui demande quelque chose de trop compliqué.
Fais le en 3 étapes :
- Variable récupérant la valeur à traiter
- Faire le calcul
- Utiliser sed pour modifier la valeur par la nouvelle


KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github

Hors ligne

#3 Le 25/04/2019, à 18:24

Watael

Re : [Résolut]SED?: récupéré, calculer et remplacer par le résultat [bash]

perso, je passerais tout de suite à awk.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#4 Le 25/04/2019, à 19:03

baloovsrayman

Re : [Résolut]SED?: récupéré, calculer et remplacer par le résultat [bash]

OK,
- je vais m'adapter au bonne pratique smile
Je vais voir quelle solution me semble la plus sympas je ne connais pas le fonctionnement ni la syntaxe de awk ( je vais lire le manuel ) ou si vous avez un cour en accéléré je prend.
Sinon je vais procéder en plusieurs étapes je mettrai la solution que je trouve dans la discutions
merci

Hors ligne

#5 Le 25/04/2019, à 21:01

baloovsrayman

Re : [Résolut]SED?: récupéré, calculer et remplacer par le résultat [bash]

Watael a écrit :

perso, je passerais tout de suite à awk.

Voila effectivement pour ce genre de chose awk est plus approprier même si la commande n'est pas simple
Donc pour ce cas particulier j'ai trouver mes renseignement la :

https://connect.ed-diamond.com/GNU-Linu … e-fichiers

Voilas du coup à quoi ressemble ma commande :

awk 'BEGIN{FS=","} {print ($2*100)/3600 "%"}' fichier_temp 

mon séparateur dans le fichier est , je 'print' le calcul en ajoutant le % en utilisant mon fichier_temp comme source.

Hors ligne

#6 Le 25/04/2019, à 22:53

Watael

Re : [Résolut]SED?: récupéré, calculer et remplacer par le résultat [bash]

gawk (à partir de la version 4.1) peut effectuer le remplacement "directement" (-i inplace)dans le fichier source, comme sed.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne