[Shell] Detection de mots dans fichier
Résolu/Fermé
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
-
25 juil. 2013 à 11:42
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 juil. 2013 à 16:32
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 26 juil. 2013 à 16:32
A voir également:
- [Shell] Detection de mots dans fichier
- Fichier rar - Guide
- Fichier host - Guide
- Fichier iso - Guide
- Comment réduire la taille d'un fichier - Guide
- Ouvrir fichier .bin - Guide
3 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
25 juil. 2013 à 11:52
25 juil. 2013 à 11:52
Salut,
Tes balises à supprimer seront toujours sur 2 lignes ou elles sont aussi susceptibles de n'être que sur une seule ?
Tes balises à supprimer seront toujours sur 2 lignes ou elles sont aussi susceptibles de n'être que sur une seule ?
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
25 juil. 2013 à 12:11
25 juil. 2013 à 12:11
Bonjour zipe31,
c'est bien là qu'est mon soucis, en fonction des différents xml, elles peuvent être sur une deux ou même 4 lignes ...
c'est bien là qu'est mon soucis, en fonction des différents xml, elles peuvent être sur une deux ou même 4 lignes ...
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
25 juil. 2013 à 12:19
25 juil. 2013 à 12:19
Qu'à cela ne tienne ;-))
$ cat plop <titi cette ligne serait à supprimer timestamp="2013-07-23"> <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> </titi> <titi cette ligne serait à supprimer timestamp="2013-07-23"> <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> </titi> $ sed '/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/titi>/d' plop <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> $
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
25 juil. 2013 à 13:43
25 juil. 2013 à 13:43
Je vais test ça de suite !
est ce qu'à la fin de cette ligne :
$ sed '/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/titi>/d' plop
je peux faire une redirection de ce style ? :
est ce qu'à la fin de cette ligne :
$ sed '/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/titi>/d' plop
je peux faire une redirection de ce style ? :
$ sed '/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/titi>/d' plop >> monXml.xml
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
25 juil. 2013 à 13:49
25 juil. 2013 à 13:49
Oui.
Mais tu peux aussi faire avec l'option "w" (write) de sed :
Mais tu peux aussi faire avec l'option "w" (write) de sed :
sed '/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/titi>/d;w fichier.xml' plop
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
25 juil. 2013 à 14:18
25 juil. 2013 à 14:18
zipe c'est nikel ça marche comme il le faut, par contre, saurait tu comment faire pour ne pas voir le traitement à l'écran ? est ce que c'est à cause de l'option w ?
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
25 juil. 2013 à 14:27
25 juil. 2013 à 14:27
Sachant qu'en plus je vais répéter cette opération sur plusieurs autres fichiers en entrées, mais je garde la même sortie
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
26 juil. 2013 à 14:50
26 juil. 2013 à 14:50
Re tous le monde,
Du coup j'ai testé un peu les "limites" de sed, et j'ai un cas ou mon sed :
enfaite quand mon entête xml est de ce genre :
ça marche, en revanche si je modifie mon entete comme ça par exemple :
(tout sur une ligne) mon sed ne fait rien ... j'ai essayé aussi de le mettre dans une variable mais rien aussi...
Si quelqu'un à une réponse, ou une piste ! :-)
Du coup j'ai testé un peu les "limites" de sed, et j'ai un cas ou mon sed :
sed '/^<?xml .*?>$/d;/^<?xml /,/?>$/d;/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/taleo>/d' maSource.xml >>monXml.xml
enfaite quand mon entête xml est de ce genre :
<?xml version="1.0" encoding="UTF-8"?> <balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00">
ça marche, en revanche si je modifie mon entete comme ça par exemple :
<?xml version="1.0" encoding="UTF-8"?><balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00">
(tout sur une ligne) mon sed ne fait rien ... j'ai essayé aussi de le mettre dans une variable mais rien aussi...
Si quelqu'un à une réponse, ou une piste ! :-)
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
26 juil. 2013 à 15:01
26 juil. 2013 à 15:01
Bizarre chez moi ça marche :
$ cat plop -n 1 <?xml version="1.0" encoding="UTF-8"?> 2 <balise1 xmlns="" 3 timestamp="2013-07-23T12:00:25.944+02:00"> 4 <toto> 5 <bla> blablablalbla</bla> 6 <blo> 1111111111</blo> 7 </toto> 8 9 <toto> 10 <bla> blablablalbla</bla> 11 <blo> 1111111111</blo> 12 </toto> 13 </balise1> 14 15 <?xml version="1.0" encoding="UTF-8"?><balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00"> $ sed -n '/^<?xml/,/timestamp=/p' plop <?xml version="1.0" encoding="UTF-8"?> <balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00"> <?xml version="1.0" encoding="UTF-8"?><balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00"> $
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
26 juil. 2013 à 15:13
26 juil. 2013 à 15:13
oui j'ai essayé cette façon ça marche, sauf que mon soucis n'est pas le même que moim,
moi je supprime les lignes d'entêtes :
sed '/^<?xml .*?>$/d;/^<?xml /,/?>$/d;/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/taleo>/d' maSource.xml >>monXml.xml
moi je supprime les lignes d'entêtes :
sed '/^<?xml .*?>$/d;/^<?xml /,/?>$/d;/^<titi .*>$/d;/^<titi /,/>$/d;/^<\/taleo>/d' maSource.xml >>monXml.xml
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 407
26 juil. 2013 à 15:26
26 juil. 2013 à 15:26
Oups j'ai cru que "moim" et "yacleouf" était une seule et même personne (sauf que moim n'était pas connecté, ça arrive souvent), toutes mes plates ;-((
@moim : T'es gentil, la prochaine fois ouvre un autre sujet, merci.
@yacleouf : Normal, la syntaxe n'est pas bonne:
@moim : T'es gentil, la prochaine fois ouvre un autre sujet, merci.
@yacleouf : Normal, la syntaxe n'est pas bonne:
$ cat plop <?xml version="1.0" encoding="UTF-8"?> <balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00"> <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> </balise1> <?xml version="1.0" encoding="UTF-8"?><balise1 xmlns="" timestamp="2013-07-23T12:00:25.944+02:00"> $ sed '/^<?xml .*[^?]>$/d;/^<?xml /,/">/d' plop <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> <toto> <bla> blablablalbla</bla> <blo> 1111111111</blo> </toto> </balise1> $
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
26 juil. 2013 à 15:45
26 juil. 2013 à 15:45
j'ai jamais posté sans être connecté :)
Je vais test ton petit bout ! Merci encore :)
Je vais test ton petit bout ! Merci encore :)
yacleouf
Messages postés
438
Date d'inscription
mercredi 11 mars 2009
Statut
Membre
Dernière intervention
8 juin 2015
39
26 juil. 2013 à 16:01
26 juil. 2013 à 16:01
Et voilà conclusion, ça marche aussi !
en tout cas l'intervention de moim m'aura permis d'avoir un petit bout de code à garder sous le coude !
Merci encore Zipe !
en tout cas l'intervention de moim m'aura permis d'avoir un petit bout de code à garder sous le coude !
Merci encore Zipe !