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 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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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 cool,

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 ... hmm

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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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 : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde 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