Supprimer chaîne de caractères entre <> et...
Fermé
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
-
17 sept. 2018 à 13:14
Utilisateur anonyme - 20 sept. 2018 à 16:16
Utilisateur anonyme - 20 sept. 2018 à 16:16
A voir également:
- Supprimer chaîne de caractères entre <> et...
- Caractères ascii - Guide
- Supprimer une page word - Guide
- Supprimer compte instagram - Guide
- Caractères spéciaux clavier azerty - Guide
- Chaine tnt gratuite sur mobile - Guide
5 réponses
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
17 sept. 2018 à 13:48
17 sept. 2018 à 13:48
Finalement, j'ai trourvé. :-)
awk -F "[<>]" 'BEGIN {n=0} {if(n++)printf ";"; printf "%s", $3} /bucket_billi/ {print ""; n=0} ' titi
=> paxq3;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;0;GB;3;0;0;;
awk -F "[<>]" 'BEGIN {n=0} {if(n++)printf ";"; printf "%s", $3} /bucket_billi/ {print ""; n=0} ' titi
=> paxq3;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;0;GB;3;0;0;;
Utilisateur anonyme
17 sept. 2018 à 16:28
17 sept. 2018 à 16:28
salut,
tu es sûr du format de ces fichiers ?
c'est toi qui les génères, ou d'où viennent-ils ?
ce n'est pas du XML correct : il n'y a pas de fermeture d'étiquette :
--------------------------^
tu es sûr du format de ces fichiers ?
c'est toi qui les génères, ou d'où viennent-ils ?
ce n'est pas du XML correct : il n'y a pas de fermeture d'étiquette :
<tag>value</tag>
--------------------------^
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
17 sept. 2018 à 17:01
17 sept. 2018 à 17:01
Le bon format est
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<namespace_billing_info>
<namespace>paxq</namespace>
<total_size>18038.8706</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>190526136</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<sample_time>2018-09-17T14:48:23Z</sample_time>
<bucket_billing_info>
<name>paxq2</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>362.8567</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>11357245</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<bucket_billing_info>
<name>paxq3</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>0</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>3</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<bucket_billing_info>
<name>paxq0</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>14943.2213</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>75111814</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<bucket_billing_info>
<name>paxq1</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>2732.7926</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>104057074</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<next_marker/>
<uptodate_till>2018-09-08T08:05:00.000</uptodate_till>
</namespace_billing_info>
et je veux obtenir:
paxq;18038.8928;GB;190526459;2018-09-17T14:50:07Z
paxq2;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;362.8632;GB;11357300
paxq3;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;0;GB;3
paxq0;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;14943.2213;GB;75111814
paxq1;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;2732.8083;GB;104057342
:-) J'y arrive mais je dois bidouiller pas mal... C'est assez moche et pas franchement dynamique.
Les valeurs de <total_mpu_size> et <total_mpu_parts> ne m'intéresse pas.
sinon, ça marche avec
cat fichier | awk -F "[<>]" '$3 "" {if(n++)printf ";"; printf $3} /bucket_billi/ {print ""; n=0} ' toto | awk NF mais si une valeur = 0, elle n’apparaît pas.
Merci
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<namespace_billing_info>
<namespace>paxq</namespace>
<total_size>18038.8706</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>190526136</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<sample_time>2018-09-17T14:48:23Z</sample_time>
<bucket_billing_info>
<name>paxq2</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>362.8567</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>11357245</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<bucket_billing_info>
<name>paxq3</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>0</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>3</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<bucket_billing_info>
<name>paxq0</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>14943.2213</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>75111814</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<bucket_billing_info>
<name>paxq1</name>
<vpool_id>urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global</vpool_id>
<total_size>2732.7926</total_size>
<total_size_unit>GB</total_size_unit>
<total_objects>104057074</total_objects>
<total_mpu_size>0</total_mpu_size>
<total_mpu_parts>0</total_mpu_parts>
<TagSet/>
</bucket_billing_info>
<next_marker/>
<uptodate_till>2018-09-08T08:05:00.000</uptodate_till>
</namespace_billing_info>
et je veux obtenir:
paxq;18038.8928;GB;190526459;2018-09-17T14:50:07Z
paxq2;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;362.8632;GB;11357300
paxq3;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;0;GB;3
paxq0;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;14943.2213;GB;75111814
paxq1;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;2732.8083;GB;104057342
:-) J'y arrive mais je dois bidouiller pas mal... C'est assez moche et pas franchement dynamique.
Les valeurs de <total_mpu_size> et <total_mpu_parts> ne m'intéresse pas.
sinon, ça marche avec
cat fichier | awk -F "[<>]" '$3 "" {if(n++)printf ";"; printf $3} /bucket_billi/ {print ""; n=0} ' toto | awk NF mais si une valeur = 0, elle n’apparaît pas.
Merci
je pratique très peu XSLT et uniquement pour moi, donc j'ai fait un collage de ce que j'ai trouvé sur internet, et ce n'est probablement pas la meilleure manière de faire :
à utiliser avec Xalan, xsltproc, xmllint...
<?xml version="1.0"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="text" encoding="utf-8"/> <xsl:template match="/namespace_billing_info"> <xsl:for-each select="."> <xsl:value-of select="*[text() != '' and not(self::total_mpu_size) and not(self::total_mpu_parts)]"/><xsl:text>;</xsl:text> </xsl:for-each> <xsl:for-each select="bucket_billing_info"> <xsl:for-each select="*[text() != '' and not(self::total_mpu_size) and not(self::total_mpu_parts)]"> <xsl:value-of select="."/><xsl:text>;</xsl:text> </xsl:for-each><xsl:text> </xsl:text> </xsl:for-each> </xsl:template> </xsl:stylesheet>ce qui produit :
paxq;paxq2;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;362.8567;GB;11357245;
paxq3;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;0;GB;3;
paxq0;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;14943.2213;GB;75111814;
paxq1;urn:storageos:ReplicationGroupInfo:eea19191-5584-4c65-958b-cc6826f7c588:global;2732.7926;GB;104057074;
à utiliser avec Xalan, xsltproc, xmllint...
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
18 sept. 2018 à 10:16
18 sept. 2018 à 10:16
Pardon... je n'ai pas précisé mais je dois traiter le fichier xml par un shell.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bob737
Messages postés
144
Date d'inscription
jeudi 24 septembre 2009
Statut
Membre
Dernière intervention
14 mars 2024
18 sept. 2018 à 17:13
18 sept. 2018 à 17:13
Dans une production, on a rarement le choix de la manière dont on interprète les données.
et oui, j'utilise un awk dans un shell.
Bref..
et oui, j'utilise un awk dans un shell.
Bref..