Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites".
Test de l'ISO d'Ubuntu francophone : nous avons besoin de testeurs pour la version francophone d'Ubuntu 14.04. Liens et informations ici.

#1 Le 20/03/2009, à 04:23

Doun

Effacer chaine de caractere présente dnas plusieurs fichiers

Bonjour,

J' ai un script php comprenant biensur plus fichiers.

Dans une vintaine de fichier il y a une chaine de caractere que je voudrai effacé.

Pour la trouver je fait tout dabord un :

grep -R build /var/www/truc/gui/themes/

/var/www/truc/gui/themes/omega_original/admin/menu_system_tools.tpl:  <td class="bottom" align="center">truc {VERSION}<br />build: {BUILDDATE}<br />Codename: {CODENAME}</td>
/var/www/truc/gui/themes/omega_original/admin/menu_general_information.tpl:  <td class="bottom" align="center">truc {VERSION}<br />build: {BUILDDATE}<br />Codename: {CODENAME}</td>
/var/www/truc/gui/themes/omega_original/admin/menu_settings.tpl:  <td class="bottom" align="center">truc {VERSION}<br />build: {BUILDDATE}<br />Codename: {CODENAME}</td>
/var/www/truc/gui/themes/omega_original/admin/menu_users_manage.tpl:           <td class="bottom" align="center">truc {VERSION}<br>build: {BUILDDATE}<br>Codename: {CODENAME}</td>
/var/www/truc/gui/themes/omega_original/admin/menu_ticket_system.tpl:  <td class="bottom" align="center">truc {VERSION}<br />build: {BUILDDATE}<br />Codename: {CODENAME}</td>

j'aimerai donc simplement effacer toute cette ligne dnas chacun de ces fichiers.

Il y a vraiement pas mal de fichier a modifier je cherche donc un astuce pour le faire automatiquement.

Meric a tous

#2 Le 20/03/2009, à 11:20

serged

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

Un script avec sed ?


Linux-Mint Qiana 64 (Cinnamon) sur ASUS F2A55/AMD A8-5600K APU

Hors ligne

#3 Le 20/03/2009, à 11:26

olsman037

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

Regarde sur ce site.. Je pense que ça peut t'aider...
http://www.developpez.net/forums/d49957 … et-simple/


Sony Vaio VPC-SB1C5E, i7-2620M, 8Go, GPU AMD 6470M avec triple boot W7, Ubuntu 10.10 et Arch...
Galère les nouveaux sony sous linux!!!! (switch AMD/Intel, touchpad, ethernet,....)

Hors ligne

#4 Le 20/03/2009, à 11:32

Sciensous

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

je propose:

for i in `grep -lR build /var/www/truc/gui/themes/*` ; do rm $i; done

/!\ les ` entourant le grep s'obtiennent avec alt+7 et renvoient le retour de l'instruction (les fichiers trouvés pour ici)
Il suffisait de rajouter l'option l pour n'avoir que le nom (avec chemin) du fichier
cool

EDIT; comme le signale AnsuzPeorth, j'ai du mal lire la demande et en effet ça efface les fichiers contenant la chaine recherchée

Dernière modification par Sciensous (Le 20/03/2009, à 17:07)

Hors ligne

#5 Le 20/03/2009, à 14:15

AnsuzPeorth

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

@Sciensous
Ta proposition supprime le fichier en question, mais je pense qu'il voulait juste supprimer la ligne ou se trouve l'item.
Je ferais comme ça (mais il y a surement mieux, comme tjrs)

 grep -lR "la chaine" /home/dossier/cible | xargs -I{} sed -i '/la chaine/d' {}

Cela efface la ligne ou se trouve 'la chaine' dans chaque fichier trouvé par grep


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

Hors ligne

#6 Le 20/03/2009, à 14:32

AnsuzPeorth

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

Ou en plus court

sed -i '/la chaine/d' $(grep -lR "la chaine" /home/dossier/cible)

Testé sur 3 fichiers, à voir sur plus si c'est ok !


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

Hors ligne

#7 Le 21/03/2009, à 16:03

serged

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

Attention à "la chaine" ! Comme (dans notre cas) la chaîne contient des "/" il faut mettre :

sed -i ':la chaine:d' $(grep -lR "la chaine" /home/dossier/cible)

Linux-Mint Qiana 64 (Cinnamon) sur ASUS F2A55/AMD A8-5600K APU

Hors ligne

#8 Le 21/03/2009, à 16:46

AnsuzPeorth

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

serged a écrit :

Attention à "la chaine" ! Comme (dans notre cas) la chaîne contient des "/" il faut mettre :

sed -i ':la chaine:d' $(grep -lR "la chaine" /home/dossier/cible)

Si je dis pas de bêtises, la chaine recherché est (dans notre cas) build.
Donc il n'est pas nécessaire de recourir à la modification du séparateur par défaut de sed.

De plus, as tu essayé ce que tu proposes ?
Le changement de separateur est "automatique" pour la forme sed s

sed 's@truc@machin@'

si on utilise une autre forme (ce que tu propose), il faudrait:

sed -i '\@la chaine@d' $(grep -lR "la chaine" /home/dossier/cible)

(les : pas top comme séparateur...c'est utilisé dans la syntaxe sed !)
Voilà pour le complément d'infos.

Si je ne me trompe pas, l'erreur est humaine smile

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


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

Hors ligne

#9 Le 22/03/2009, à 01:49

DarkShade

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

Doun a écrit :

Bonjour,

J' ai un script php comprenant biensur plus fichiers.

Dans une vintaine de fichier il y a une chaine de caractere que je voudrai effacé.

Il y a vraiement pas mal de fichier a modifier je cherche donc un astuce pour le faire automatiquement.

Meric a tous

Salut l'ami, j'ai eu besoin de faire la même chose récement, sur + de 400 fichiers, et j'ai donc écrit un petit script en shell pour faire cela.
A manier avec précaution cependant!!! Bien vérifier le répertoire a parcourir et les chaines a traiter

Télécharger le script ici

une fois télécharger reste plus qu'a le décompresser (ou tu veux) en graphique ou alors avec:

tar -xjvf StringReplace.tar.bz2

Enjoy it wink


apt-get remove windows_xp_sp2 --purge;sudo rmdir WINDOWS;apt-get install vrai_OS; Les paquets suivant vont êtres installés: Linux Ubuntu 8.04 Hardy ;) défenseur du mouvement BESICRAMQMSMSVQDFCM:"Bien Ecrire Sur Internet Ca Revient Au Meme Qu'en Mode SMS Voir Que Des Fois C'est Mieux.

Hors ligne

#10 Le 22/03/2009, à 02:01

kyncani

Re : Effacer chaine de caractere présente dnas plusieurs fichiers

Moi je fais ce genre de trucs comme ça :

find . -type f -print0 | xargs -0 perl -pi -e 's#\Q<td class="bottom" align="center">truc {VERSION}<br />build: {BUILDDATE}<br />Codename: {CODENAME}</td>\E##g'

EDIT: Evidemment, "." indique que la modification doit être faite dans ce répertoire.

Dernière modification par kyncani (Le 22/03/2009, à 02:03)

Hors ligne

Haut de page ↑