Il y a actuellement 591 visiteurs
Vendredi 22 Novembre 2024
accueilactualitésdossierscomparer les prixtélécharger gratuitement vos logicielsoffres d'emploiforum informatique
Connexion
Créer un compte

parser en bash

Besoin d'aide pour configurer un serveur ? Vous souhaitez obtenir des conseils pour référencer votre site ? Un petit souci pour accéder à votre FTP ? Des soucis de programmation en PHP / ASP / HTML / XHTML / XML / XSLT / CSS / ReactJS / AngularJS / VueJS / CGI / PERL / C / MySQL / PostgreSQL ??? Nous avons peut-être la solution dans ce forum ...

parser en bash

Message le 02 Déc 2010 17:07

Bonjour,
J'ai actuellement un problème, j'essaye de créer un parser pour filtrer toutes les balises d'un fichier .xml afin de récupérer uniquement le texte du fichier. Je pensais utiliser un grep mais je n'y arrive pas. Pourriez vous m'aider ?
Merci de vos réponses.
mika
Visiteur
Visiteur
 
Messages: 4
Inscription: 02 Déc 2010 16:58
 


Re: parser en bash

Message le 02 Déc 2010 21:58

Grep (peut-être) mais surtout SED et/ou AWK... mon préféré étant SED.

Tu trouves ton bonheur ici => http://gnuwin32.sourceforge.net/

Si tu veux un peu plus d'aide, détaille ta demande avec un exemple de fichier.
Perso, j'adore ça utiliser SED et GREP avec des pipes enchainés ( | ) et des lignes super longues et incompréhensibles genre
Code: Tout sélectionner
sed -e "s/^D\(.\{115\}\)\(.*\)/D\1/g" fichier-entree.txt > fichier-sortie.txt

ou encore
Code: Tout sélectionner
type script_sisteron.txt | sed -e "s/\(^le_dossier\ \)\([0-9]*\)\(.*\)/echo \"\2\" \&\& \1\2\*\.\*\3\*\.\*/g" | sed -e "s/le_dossier/ren/g" | sed -e "s/devient//g" > new_sisteron.txt

:lol:
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9048
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: parser en bash

Message le 04 Déc 2010 10:02

Voici un exemple simple de filtre fait à partir de l'exemple XML sur Wikipédia => http://fr.wikipedia.org/wiki/XML_Schema#Exemple stocké dans un fichier nommé exemple.xml

Code: Tout sélectionner
sed -e "s/\([^>]*>\)\([^<]*\)\(.*\)/\2/g" exemple.xml

donne :
Code: Tout sélectionner


MBODJ
Babacar
1996-10-06
NIIT
764704140



... on peut aussi filtrer et supprimer les lignes vides (produites par des lignes où il y a seulement des balises) avec grep ainsi :
Code: Tout sélectionner
sed -e "s/\([^>]*>\)\([^<]*\)\(.*\)/\2/g" exemple.xml | grep -v "^$"

Code: Tout sélectionner
MBODJ
Babacar
1996-10-06
NIIT
764704140
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9048
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: parser en bash

Message le 04 Déc 2010 18:13

ok merci je vais essayer cela :)
mika
Visiteur
Visiteur
 
Messages: 4
Inscription: 02 Déc 2010 16:58
 

Re: parser en bash

Message le 08 Déc 2010 14:12

re bonjour
j'ai utilisé SED pour enlever toute les balises mais je ne sais pas comment faire pour mettre des espaces entre chaque phrase ...
Merci de vos réponses :)
mika
Visiteur
Visiteur
 
Messages: 4
Inscription: 02 Déc 2010 16:58
 

Re: parser en bash

Message le 08 Déc 2010 20:13

CaSa a écrit:Si tu veux un peu plus d'aide, détaille ta demande avec un exemple de fichier.

Ce serait utile en effet, car on saurait quelle est la structure initiale du fichier et ce que tu veux faire exeactement...
Au moins un extrait.
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9048
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 

Re: parser en bash

Message le 10 Déc 2010 22:54

Salut,
Alors j'ai utilisé un sed pour enlever toutes les balises puis j'ai envoyé le texte extrait dans un fichier .html
Mais le seul problème c'est que mon texte est tous collé et il tiens en 1 seul lignes. Donc il est pas très présentable, c pour cela que je souhaite faire des espace et des sauts de lignes. J’espère avoir était assez explicite.
mika
Visiteur
Visiteur
 
Messages: 4
Inscription: 02 Déc 2010 16:58
 

Re: parser en bash

Message le 13 Déc 2010 13:10

Je comprend qu'à moitié... peut-être tu veux avoir ton fichier lisible (interprétable) en html avec des sauts de lignes, c'est ça ?

A ce moment-là, tu ajoutes des balises <br /> en fin de lignes à ton fichier comme ceci... :
Code: Tout sélectionner
sed -e "s/\([^>]*>\)\([^<]*\)\(.*\)/\2/g" exemple.xml | grep -v "^$" |  sed -e "s/$/<br \/>/g" > ton_fichier.html
Avatar de l'utilisateur
CaSa
PC-Infopraticien
PC-Infopraticien
 
Messages: 9048
Inscription: 13 Mai 2003 16:32
Localisation: Sisteron... et jamais loin d'une Debian
 



Sujets similaires

Message [Réglé] shell bash refuse de se lancer
Bonjour,j'ai suivi les étapes pour installer shell bash, je suis sous windows 10 famille, 64 bits 19043 et quand j'arrive au moment d'exécuter dash, la fenêtre s'ouvre et se referme directement. Pouvez-vous m'aider s'il vous plaît ?
Réponses: 7

Message manuel pour bash
bonjour, et bonne année!! je voudrais que quelqu'un d'averti sur le sujet me dirige vers un manuel pour "bash" sous linuxje suis sous debian squeeze 6.0.6 et je compte y rester jusqu'à son terme(j'ai tester wheezy,mais ça ne m'a pas convaincu)je voudrais etre un peu plus calé sur la fl ...
Réponses: 5

Message [Réglé]problème script bash
bonjour , je suis sous debian squeeze et je suis entrain de faire un script pour lancer des jeux "ifiction-interactive" voir ici http://ifiction.free.fr/ pour savoir ce qu'est un jeu "ifiction"et je bloque sur ce bout de code de mon script:Code: Tout sélectionner#!/bin/sh. ...
Réponses: 4

Message [Bash] Instancier une variable ayant un nom précis...
Salut tout le monde ! Voilà j'ai un gros soucis... et j'ai l'impression qu'il n'y a pas de solution. xoProblème imagé :Code: Tout sélectionner> script.sh machin bidule [Entrée][Traitement]> echo $machin [Entrée]biduleC'est aussi simple que ça ! Je veux créer une variabl ...
Réponses: 0

Message bash + paint ?
Salut,j'ai une petite question ^^serait il possible de créer un fichier bash, qui se charge d'ouvrir une photo avec paint par exemple, et de la redimensionner puis sauvegarder.toute la manipulation est accessible depuis les menus de paint, et je ne connais pas vraiment ce que l'on peut faire avec du ...
Réponses: 4

Message script bash
voila je voudrais créer un script bash qui a lappuie de mon controleur de domaine samba va chercher un fichier texte contenant les noms et les mots de passe de chaque élève de la classe.avec ces noms et ces mots de passe le script crée un compte unix et un compte smb pour chaque élève de la lasse e ...
Réponses: 0

Message bash ligne de commande, deplacer fichiers
Salut, j'ai cygwin d'installé sur mon ordi, et je voudrais deplacer par exemple tous les fichier .avi présents sur mon disque par l'intermediaire des commandes find et mv. Le truc, c'est que je n'arrive pas a dire a la cmde move qu'il faut prendre le résultat de la commande find. J'ai essayé ca : ...
Réponses: 2


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité


.: Nous contacter :: Flux RSS :: Données personnelles :.
cron