Commande sed bash

Fermé
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 - Modifié par gardiendelanuit le 18/11/2011 à 19:31
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 - 21 nov. 2011 à 18:54
Bonsoir à tous!
Je viens ici en raison des limites de google...
En effet j'ai un projet bash à faire et débutant dans ce language je voudrais utiliser cette fonction.
Voici ce que j'ai actuellement:
txt_brute= sed -i 's|<[^>]*>||g' $html #On enleve les balises HTML pour obtenir le texte brute  
 echo $txt_brute >> texte_brute/texte_brute.txt


Je m'explique: j'ai récupéré le code source d'une page avec wget et je l'ai mise dans la variable $html, que je veux traiter avec sed en lui enlevant toutes les balises (autant que possible) pour attribuer à son tour le flux traité dans $txt_brute.

Mais voilà pour l'instant j'obtiens la modification dans le fichier d'origine et non dans texte_brute...
De plus je ne sais pas vraiment m'y prendre pour éliminer les balises du genre le code source de google...

Merci d'avance de vos réponses.

4 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
18 nov. 2011 à 20:03
Salut,

Tu dois juste récupérer le texte brut ?

Regarde si tu as "w3m" d'installer (dans le cas contraire tu l'installes) et :

wget $URL |  w3m -dump  -T text/html

Et tu auras ton texte brut ;-))
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
19 nov. 2011 à 12:02
Oups j'ai oublié les options pour "wget" ;-(

wget -O- $URL |  w3m -dump  -T text/html
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
19 nov. 2011 à 12:06
Re-

Et pour répondre à ta question première, à savoir :
Mais voilà pour l'instant j'obtiens la modification dans le fichier d'origine et non dans texte_brute...
Enlève l'option "-i" (in-place) de sed ;-)

txt_brute= sed  's|<[^>]*>||g' $html

0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 418
19 nov. 2011 à 19:17
Décidément je ne fais que des c*nneries moi ;-((

 txt_brute=$(sed  's|<[^>]*>||g' $html)

Sans espaces avant et après le signe "égal" ;-\
0
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
19 nov. 2011 à 19:15
Merci beaucoup pour tes réponses! Je test ça dès que je passe sous Linux (j'ai un projet, personnel cette fois-ci, que j'avance).
Je te tiens au courant, merci encore.
0
gardiendelanuit Messages postés 1770 Date d'inscription jeudi 20 décembre 2007 Statut Membre Dernière intervention 19 novembre 2016 264
Modifié par gardiendelanuit le 21/11/2011 à 18:55
Bien voilà le résumé: w3m marche parfaitement seulement celà m'étonnerais que je puisse l'utiliser alors que c'est un projet que l'on doit faire sans partie dejà faite et avec les commandes dejà présente.
Pour ce qui est du sed, je pense que je dois faire plusieurs sed consécutifs en pipe jusqu'à avoir le meilleur résultat possible...
Pour ce qui est du wget, je voudrais que lorsqu'il y a un quelquonc problème, on puisse écrire un message... Comment faire ça (je ne sais pas si le bash fonctionne comme le c++ ou php où la fonction retourne 0 ou 1 par exemple...)

Merci d'avance et merci encore de tes réponses!
0