Pages : 1
#1 Le 01/02/2013, à 17:08
- leyoyel
(Résolu)Utilisation de sed
Bonjour,
j'ai plusieurs centaines de fichier où je voudrait enlever des occurrences. Ici il s'agit de liens internet que je voudrait transformer en lien directs.
Par exemple
<a href="http://tata/toto/bibi/monfichier.html">Mon Fichier</a>
Je voudrait enlever dans tous mes fichiers l'expression
http://tata/toto/bibi/
J'ai essayer des choses avec sed mais ça ne donne rien ...
Quelqu'un pourrait-il m'aider ?
Merci d'avance
Dernière modification par leyoyel (Le 03/02/2013, à 13:05)
Hors ligne
#2 Le 01/02/2013, à 17:24
- pingouinux
Re : (Résolu)Utilisation de sed
Bonjour,
sed -r 's#(<a +href=")http://tata/toto/bibi/#\1#' fichier >nouveau_fichier
Hors ligne
#3 Le 01/02/2013, à 17:26
- nesthib
Re : (Résolu)Utilisation de sed
Essaie :
sed 's|<a href="\([^"]\+\)">[^<>]\+</a>|\1|' ton_fichier
et pour modifier dans le fichier ajoute l'option -i
edit : @pingouinux : c'est marrant il y avait 2 façons de comprendre sa demande (transformer les balises en lien ou virer les liens) et on a fait les deux ^^
redit : en fait non, j'avais lu trop vite, ma solution remplace les balises par le lien, donc ça n'est pas ça.
Dernière modification par nesthib (Le 01/02/2013, à 17:29)
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#4 Le 01/02/2013, à 21:12
- Latsuj
Re : (Résolu)Utilisation de sed
Bonsoir,
OLDIFS=$IFS
IFS=''
for file in *; do
for ligne in $(cat $file); do
echo $ligne | sed -i 's/http:\/\/tata\/toto\/bibi//g' $file
done
done
IFS=$OLDIFS
Et tu fais ceci avec comme dit avec l'option i et sur tout les fichiers dans le repertoire. Si tu as des dossiers dans dossiers...ext. Tu peux utiliser le find à la place de *.
Bonne soirée
Dernière modification par Latsuj (Le 01/02/2013, à 21:15)
Hors ligne
#5 Le 02/02/2013, à 23:03
- leyoyel
Re : (Résolu)Utilisation de sed
Bonsoir à vous trois ,
j'ai essayé les diverses méthode:
Celle de Pingouinux marche mais oblige à créer un deuxième fichier.
Celle de Nesthib fonctionne avec l'option -i (je ne vois pas pourquoi tu dis que ce n'est pas ça).:P
Celle de Latsuj ne fonctionne pas, j'ai bash qui s'emballe avec 94% du cpu 73% de mémoire et l'ordi qui freeze ...
Peut être est ce dû à ma mauvaise formulation en fait les lignes à enlever sont plutôt du style:
http://tata.fr/titi/toto/
Pour l'exemple de Latsuj je me suis dit que le point avait peut être son importance ?
Qu'en pensez vous ?
Hors ligne
#6 Le 02/02/2013, à 23:25
- nesthib
Re : (Résolu)Utilisation de sed
Tu peux donner un exemple avant/après de ce que tu veux obtenir ?
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#7 Le 03/02/2013, à 00:27
- leyoyel
Re : (Résolu)Utilisation de sed
Dac alors par exemple:
<a href="http://tata.org/titi/toto-fr/html/monfichier.html">Mon Fichier</a>
Et j'aimerai avoir:
<a href="monfichier.html">Mon Fichier</a>
Voilà, et au passage est il possible de faire cela avec *.html pour traiter tous les fichiers d'un coup ?
En fait je suis entrain d'adapter la traduction de Csound pour Qutecsound, le problème étant que Qutecsound ne prend pas les liens externes. Du coup j'ai tout mis dans un dossier dans lequel j'aimerai traiter tous mes fichiers pour enlever les liens externes.
Dernière modification par leyoyel (Le 03/02/2013, à 00:45)
Hors ligne
#8 Le 03/02/2013, à 01:17
- Bhajnaal
Re : (Résolu)Utilisation de sed
Tu peux faire par exemple :
find -iname "*.html" -exec sed 'substitution' -i '{}' \;
En mettant ce qui te convient à la place de 'substitution'.
Avec l'option -i, sed écrit directement dans les fichiers, il vaut mieux avoir une copie des fichiers qui seront modifiés ou être certain du résultat.
Hors ligne
#9 Le 03/02/2013, à 03:32
- nesthib
Re : (Résolu)Utilisation de sed
Exactement. Combine la solution de pingouinux et le find de Bhajnaal et tu auras ton résultat.
Pense à faire une copie de sauvegarde de ton répertoire avant de travailler et à te positionner dans le bon répertoire. Idéalement, lance la commande find sans le « -exec… » pour vérifier que tu travailles sur les bons fichiers avant de te lancer.
GUL Bordeaux : Giroll – Services libres : TdCT.org
Hide in your shell, scripts & astuces : applications dans un tunnel – smart wget – trouver des pdf – install. auto de paquets – sauvegarde auto – ♥ awk
⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn
Hors ligne
#10 Le 03/02/2013, à 13:05
- leyoyel
Re : (Résolu)Utilisation de sed
Merci ça fonctionne.
Hors ligne