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 03/04/2009, à 10:37

soupaloignon

[Résolu] Script : Changer une phrase commençant par :

Bonjour,

Je suis en train de bricoler un script, et à un moment j'ai besoin de lancer une commande chargée d'effacer une ligne commençant par TOTO (par exemple) et de la remplacer par une autre ligne.

J'ai bien une commande avec sed :
sed -i 's/TOTO/TATA/g'

Mais elle ne remplace que l'expression exacte TOTO. Ce qui m'intéresse c'est que TATA vienne remplacer la ligne commençant par TOTO, quel que soit le nombre de mots qu'il y a derrière TOTO.

J'ai été fouiller dans cette doc aussi (très fournie au demeurant) http://sed.sourceforge.net/sed1line_fr.html, mais sans y trouver mon bonheur.

Donc si vous avez une réponse... Je sus preneur wink

Dernière modification par soupaloignon (Le 03/04/2009, à 12:40)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#2 Le 03/04/2009, à 10:55

jojo-lapin

Re : [Résolu] Script : Changer une phrase commençant par :

Salut,

essaye ça:

sed 's/toto.*$/tata/g'

#3 Le 03/04/2009, à 11:15

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

jojo-lapin a écrit :

Salut,

essaye ça:

sed 's/toto.*$/tata/g'

Génial merci. Ce n'est pas la commande exacte, il y avait juste le -i à rajouter.
Merci beaucoup.

Commande finale :

sed -i 's/TOTO.*$/tata/g'

Edit : Juste à titre d'info supplémentaire. La commande marche très bien si tata est seul. Par contre si on veut remplacer TOTO (et ce qu'il y a derrière) par "tata va à la pêche", cela ne fonctionne pas. La ligne sera juste remplée par "tata".

J'ai essayé des simples et doubles quotes, mais ça marche pas ("tata va à la pêche" sera une ligne rentrée dans une fenêtre zenity:

sed -i 's/TOTO.*$/"tata va à la pêche"/g'
sed -i 's/TOTO.*$/'tata va à la pêche'/g'

La portion de code dans le script est celle-là :

#! /bin/bash
PHRASE=$(zenity --entry  --entry-text "Taper la nouvelle phrase" )
sed -i 's/TOTO.*$/$PHRASE/g' /home/soupaloignon/fichier

MAis telle quelle cela remplace la ligne commençant par TOTO, par $PHRASE

Dernière modification par soupaloignon (Le 03/04/2009, à 11:43)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#4 Le 03/04/2009, à 12:28

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

Bjr,
remplace les ' par des "

sed -i "s/^TOTO.*$/$PHRASE/g" /home/soupaloignon/fichier

ajoute le ^ pour indiquer que toto doit etre en debut de ligne.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 03/04/2009, à 12:39

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Génial, merci beaucoup, cela fonctionne nickel smile

Bien vu le "^". Si il n'y a pas ce symbole il va remplacer la phrase à partir du mot TOTO inclu, mais sans se soucier de ce qu'il y a devant, et en le laissant.

Pour info cette portion de script va s'intégrer dans un script que j'ai fait il y a quelques temps, et qui permet de traiter en masse des photos pour leur faire soit un cadre ou une ombre portée.
Les paramètres pour le cadre sont la couleur et l'épaisseur, pour l'ombre portée la couleur de l'ombre et la couleur de fond.
Dans le script actuel ces valeurs sont dans le script directement et pour les modifier il faut donc l'éditer. L'idée est que l'utilisateur puisse changer les valeurs directement à partir de la fenêtre zenity.

Dernière modification par soupaloignon (Le 03/04/2009, à 12:47)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#6 Le 03/04/2009, à 12:55

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

Fais nous un joli GUI en gtkdialog alors !Tu pourras tout centraliser sur la même fenêtre !


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 03/04/2009, à 13:03

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Je maitrise pas gtkdialog wink


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#8 Le 03/04/2009, à 13:04

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

C'est un jeu d'enfants, sérieux, pas compliqué à prendre en mains c'te truc.
Jette y un oeil, tu verras (les exemples dans la doc sont tres bien fait)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#9 Le 03/04/2009, à 13:17

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Oui, j'ai jeté un oeil une fois. Mais cela reste quand même du temps à y consacrer, et le temps est une chose qui me fait parfois cruellement défaut. Donc tant que zenity répond à mes besoins...


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#10 Le 03/04/2009, à 18:31

Alain.g

Re : [Résolu] Script : Changer une phrase commençant par :

Salut

Voici une méthode plus simple et avec laquelle il n'y a pas besoin de protéger le délimiteur :

sed -i "/^TOTO/c$PHRASE" fichier

Et dans l'autre le /g est inutile wink


Xubuntu Karmic !

Hors ligne

#11 Le 03/04/2009, à 19:47

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Merci à tous les 2 en tout cas, royal, comme à votre habitude smile

Je continu sur ce post, parce qu'en fait il y a un souci que je ne comprends pas. Voici le script d'origine :

#!/bin/bash

#############################################################
#
# www.soupaloignon.net
#
# Cadre et ombre
# 2009-03-04
# Version 1
#
# Script avec 2 fonctions possibles :
# Permet de mettre un cadre autour d'une sélection d'images (epaisseur et couleur paramétrables)
# Permet de mettre une ombre portée autour d'une sélection d'images (couleur de l'ombre et couleur de fond paramétrables)
#
# Le script travaille sur une copie des images sélectionnées, qu'il place dans un répertoire
# créé dans le dossier contenant les photos à traiter
#
# Une fenêtre s'affiche lorsque le travail est terminé
#
# Le script fonctionne avec des noms de fichiers comportant des espaces
#
#############################################################


#############################################################
# Paramétres modifiables en fonction des besoins

# Paramétres pour le cadre : Couleur et épaisseur (en pixel)
COULEUR=#cccccc
BORDURE=20
# Fin des paramétres pour le cadre

# Paramétres pour l'ombre portée : Couleur de l'ombre et couleur du fond
COULEUROMBRE=#ffffff
COULEURFOND=#333333
# Fin des paramétres pour l'ombre portée

# Noms des dossiers créés
DIRCADRE=./photos-avec-cadre
DIROMBRE=./photos-avec-ombre-portee
# Fin des paramétres de la création des dossiers

# Fin des paramétres modifiables. Ne pas modifier ce qui suis, sauf si vous savez ce que vous faites ;)
#############################################################


depart=`zenity --list --width=600 --height=400  --hide-column 1 --column "" --column "" 1 "Mettre un cadre (Couleur : $COULEUR, épaisseur :$BORDURE) autour d'image(s)" 2 "Mettre une ombre portée (couleur:$COULEUROMBRE, fond : $COULEURFOND) autour d'image(s)"`


#############################################################
# Cadre
#############################################################

if [ $depart -eq 1 ] ; then

cd $NAUTILUS_SCRIPT_CURRENT_URI
if [ ! -e $DIRCADRE ]; then
	mkdir $DIRCADRE
fi;

while [ $# -gt 0 ]; do
    image=$1
  
convert "$image" -bordercolor $COULEUR -border $BORDURE $DIRCADRE/"$image"
    shift

done

zenity --info  --text="Les images avec le cadre autour sont prétes"

fi


#############################################################
# Ombre portée
#############################################################

if [ $depart -eq 2 ] ; then

cd $NAUTILUS_SCRIPT_CURRENT_URI
if [ ! -e $DIROMBRE ]; then
	mkdir $DIROMBRE
fi;

while [ $# -gt 0 ]; do
    picture=$1
   
convert "$picture" \( +clone -background $COULEUROMBRE -shadow 80x3+5+5 \) +swap -background $COULEURFOND -layers merge  +repage $DIROMBRE/"$picture"
    shift

done

c

fi

L'idée est donc de rajouter 2 entrées dans la fenêtre départ :
Modifier la couleur puis l'épaisseur du cadre
Modifier la couleur de l'ombre et la couleur du fond

Avec pour chacune de ces options 2 fenêtres zenity.
Cadre : on rentre d'abord la couleur, puis 2eme fenêtre dans laquelle on rentre l'épaisseur. Idem pour l'ombre portée

D'où le besoin de la ligne avec sed pour remplacer la variable COULEUR et la variable BORDURE wink

J'ai donc rajouté un élément pour tester dans la fenetre zenity depart :

depart=`zenity --list --width=600 --height=400  --hide-column 1 --column "" --column "" 1 "Mettre un cadre (Couleur : $COULEUR, épaisseur :$BORDURE) autour d'image(s)" 2 "Mettre une ombre portée (couleur:$COULEUROMBRE, fond : $COULEURFOND) autour d'image(s)" 3 "Modifier les valeurs pour le cadre"`

et ensuite j'ai rajouté à la fin du script déjà une fenetre, pour voir comment cela se comportait.

if [ $depart -eq 3 ]; then
 
NEWCOULEURCADRE=zenity --entry  --entry-text "Entrer la nouvelle couleur du cadre"
sed -i "s/^COULEUR=#.*$/$NEWCOULEURCADRE/g" fichier

Je n'aipas appronfondi NEWCOULEURCADRE, parce que déjà, en choissant le choix 3, tout se ferme. Pour en être certain j'ai mis un simple :
zenity --info  --text="test"
Pour tester.

Cela doit donc venir du
if [ $depart -eq 3 ]; then
Mais je vois pas ce qui cloche. Vous auriez une idée ?

Merci d'avance smile

Dernière modification par soupaloignon (Le 03/04/2009, à 19:56)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#12 Le 03/04/2009, à 20:43

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

essais toutes le soluces smile
"Normalement", il faut protéger !

if [ "$depart" -eq "3" ]; then

sinon

if [[ "$depart" -eq "3" ]]; then
if [[ "$depart" = "3" ]]; then
if [[ "$depart" == "3" ]]; then
etc
etc

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#13 Le 03/04/2009, à 20:45

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Ha ok. Je n'avais pas pensé à protéger, vu que dans le script existant cela fonctionne tel quel. Je vais tester ça. Merci smile


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#14 Le 03/04/2009, à 20:51

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Non, ça donne rien. J'ai essayé le sprotections, mais rien à faire. J'ai simplifié le script, de manière à avoir juste l'essentiel (en rajoutant juste la partie ci-dessous au script initial)

if [ $depart -eq 3 ]; then
 
zenity --info  --text="test"

Mais rien à faire sad

Dernière modification par soupaloignon (Le 03/04/2009, à 20:54)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#15 Le 03/04/2009, à 21:05

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

tu as bien mis le fi en fin??? (je pense que oui au vue du debut du script).
Mais ca devrait passer, je vois pas ou ca coince. Je t'envois sur les exemples de abs.traduc:
http://abs.traduc.org/abs-5.3-fr/ch07s03.html

Dernière modification par AnsuzPeorth (Le 03/04/2009, à 21:07)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#16 Le 03/04/2009, à 21:13

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

if [ $depart -eq 3 ]; then
 
zenity --info  --text="test"

fi

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#17 Le 03/04/2009, à 23:45

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Et bien là ça fonctionne, c'est à n'y rien comprendre. J'avais du zapper le "fi" je ne vois que ça.
Merci pour ton lien, il y a des choses très sympa au bout

Bon, je vais continuer le script alors big_smile


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#18 Le 04/04/2009, à 01:25

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

Bon, ça fonctionne nickel :

#############################################################
# Modification des valeurs de l'ombre portée
#############################################################


if [ $depart -eq 4 ]; then

NEWCOULEUROMBRE=$(zenity --entry  --entry-text "Entrer la nouvelle couleur de l'ombre portée")
NEWCOULEURFOND=$(zenity --entry  --entry-text "Entrer la nouvelle couleur de fond")
 
sed -i "s/^COULEUROMBRE=#.*$/COULEUROMBRE=#$NEWCOULEUROMBRE/g" $CHEMINNOM
sed -i "s/^COULEURFOND=#.*$/COULEURFOND=#$NEWCOULEURFOND/g" $CHEMINNOM

zenity --info  --text="la couleur de l'ombre #$NEWCOULEUROMBRE et la couleur de fond #$NEWCOULEURFOND ont bien été mises à jour.\n\nVous pouvez relancer le script pour travailler avec ces valeurs sur une sélection d'images"


fi

Par contre je ne sais pas comment entourer

NEWCOULEUROMBRE=$(zenity --entry  --entry-text "Entrer la nouvelle couleur de l'ombre portée")

pour qu'un appui sur le bouton annuler arrete l'execution du script. Parce qu'à l'heure actuelle, en cliquant sur annuler, le reste s'enchaine et on finit par se retrouver avec des valeurs vides big_smile

Dernière modification par soupaloignon (Le 04/04/2009, à 01:27)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne

#19 Le 04/04/2009, à 01:40

AnsuzPeorth

Re : [Résolu] Script : Changer une phrase commençant par :

Tu as de la chance, je viens de revenir sur le forum...!

NEWCOULEUROMBRE=$(zenity --entry  --entry-text "Entrer la nouvelle couleur de l'ombre portée")
[ "$?" = "1" ] && exit

$? représente la sortie de zenity. 1 pour annuler 0 pour valider.

edit: et protége comme vu sur abs.traduc, si c'est noté tel que...autant le faire je pense (en cas de variable vide par exemple)

[ "$var" -eq "$var1" ]

Dernière modification par AnsuzPeorth (Le 04/04/2009, à 01:44)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#20 Le 04/04/2009, à 12:08

soupaloignon

Re : [Résolu] Script : Changer une phrase commençant par :

AnsuzPeorth a écrit :

Tu as de la chance, je viens de revenir sur le forum...!

Je vois ça wink, merci pour ton aide, c'est vraiment sympa.

Je viens de tester vite fait et cela fonctionne smile. Je finirai l'intégration complète pendant le we, ainsi qu'un nettoyage de code.

Dernière modification par soupaloignon (Le 04/04/2009, à 12:11)


==> Libérez les huitres du bassin d'Arcachon <==

Hors ligne