#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 ?
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
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
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)
antiX 19 et 21 et Ubuntu 20.04 et 22.04
( sous LXDE et gnome-shell )
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)
LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)
Hors ligne
#8 Le 21/03/2009, à 16:46
- AnsuzPeorth
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)
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
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
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
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
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