PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Forums Hébergement > Forum Serveur - Sécurité et techniques > fr.comp.os.unix > Cration d'un script de découpe d'un fichier par chaîne de carcatère
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
fr.comp.os.unix Système UNIX.

Cration d'un script de découpe d'un fichier par chaîne de carcatère

Réponse
 
LinkBack Outils de la discussion
Vieux 23/02/2006, 10h22   #1
Laurent
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Cration d'un script de découpe d'un fichier par chaîne de carcatère

Bonjour,

Je dois réaliser un script qui découpe un fichier selon des chaînes
de caractères de début et de fin.

Plus clairement, un exemple :

<?xml .....
.....
<A0="18"/>
<A1="19"/>
<A2="20"/>
....
</toto>
<?xml .....
.....
<A0="35"/>
<A1="21"/>
<A2="5"/>
....
</toto>
....

Et pour simplifier, le nom de chaque fichier serait par exmple :
nom_18_19_20 et nom_35_21_5

Merci de votre aide

Laurent

  Réponse avec citation
Vieux 23/02/2006, 10h58   #2
R12y
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Cration d'un script de découpe d'un fichier par chaîne de carcatère

Laurent :

> Je dois réaliser un script


Quel "langage de script"?
Tout bon langage interprété qui se respecte dispose d'un parser XML:
- http://caml.inria.fr/cgi-bin/hump.en...rt=0&browse=49
- http://www.python.org/doc/current/li...ers.expat.html
- [perl]
- [ruby]
- ...

--
Debian/apt Repo: http://locataire-serveur.info/sectio...ian-repository
Fedora/yum Repo: http://locataire-serveur.info/sectio...edora-core-yum

  Réponse avec citation
Vieux 23/02/2006, 11h26   #3
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Cration d'un script de découpe d'un fichierpar chaîne de carcatère

On 23 Feb 2006 02:22:38 -0800, Laurent wrote:
> Bonjour,
>
> Je dois réaliser un script qui découpe un fichier selon des chaînes
> de caractères de début et de fin.
>
> Plus clairement, un exemple :
>
> <?xml .....
> ....
> <A0="18"/>
> <A1="19"/>
> <A2="20"/>
> ...
> </toto>
> <?xml .....
> ....
> <A0="35"/>
> <A1="21"/>
> <A2="5"/>
> ...
> </toto>
> ...
>
> Et pour simplifier, le nom de chaque fichier serait par exmple :
> nom_18_19_20 et nom_35_21_5

[...]

awk '
!inside && /^<\?xml/ {
inside = 1
content = ""
split("XX_XX_XX", a, "_")
}

!inside {next}

{content = content $0 "\n"}

match($0, /^<A[0-2]="[0-9]+"/) {
i = substr($0, RSTART+2, 1)
n = substr($0, RSTART+5, RLENGTH-6)
a[i] = n
next
}

/^<\/toto>/ {
file = "mon_" a[0] "_" a[1] "_" a[2]
printf "%s", content > file
close(file)
content = ""
inside = 0
}'

Ce n'est pas garanti de marcher si les fichiers resultat peuvent
faire plus de 2ko (ca marchera avec GNU awk, toutefois).

--
Stephane
  Réponse avec citation
Vieux 23/02/2006, 11h49   #4
Harpo
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Cration d'un script de découpe d'un fichier par chaîne de carcatère

Laurent wrote:

> Bonjour,
>
> Je dois réaliser un script qui découpe un fichier selon des chaînes
> de caractères de début et de fin.


Emploie un langage de script qui intègre bien les expressions
régilières, Ruby Perl Python ou encore Awk.

>
> Plus clairement, un exemple :
>
> <?xml .....
> ....
> <A0="18"/>
> <A1="19"/>
> <A2="20"/>
> ...
> </toto>
> <?xml .....
> ....
> <A0="35"/>
> <A1="21"/>
> <A2="5"/>
> ...
> </toto>
> ...
>
> Et pour simplifier, le nom de chaque fichier serait par exmple :
> nom_18_19_20 et nom_35_21_5


franchement, je ne touve pas cela plus clair, quelles sont les chaînes
de caractères de début et de fin ?

  Réponse avec citation
Vieux 23/02/2006, 15h09   #5
Nicolas George
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Cration d'un script de découpe d'un fichier par chaîne de carcatère

R12y wrote in message
<pan.2006.02.23.10.58.26.819360@etu.univ-orleans.fr>:
> Tout bon langage interprété qui se respecte dispose d'un parser XML:


Il faut faire attention: beaucoup de parseurs XML perdent certains aspects
de l'information, qui sont non-pertinents en XML mais peuvent être tout à
fait importants dans certains cas (comme le fait d'écrire ( à la place
de @ dans une adresse mail pour mettre en échec à peu de frais les robots
collecteurs les plus débiles).
  Réponse avec citation
Vieux 23/02/2006, 19h04   #6
Laurent
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Cration d'un script de découpe d'un fichier par chaîne de carcatère

Merci pour vos réponses !

Pour Harpo, la chaîne de caractère de début est "<?xml" et celle de
fin est "</toto>"

En fait, Stéphane, les exemples A0, A1, A2 sont en fait les chaînes
de caractères :
MAT_COLLAB VALUE
MAT_RC VALUE
DAP VALUE
Comment est-ce que ça modifie ton script shell ?

Encore merci

Laurent

  Réponse avec citation
Vieux 24/02/2006, 14h21   #7
Stephane Chazelas
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Cration d'un script de découpe d'un fichierpar chaîne de carcatère

On 23 Feb 2006 11:04:08 -0800, Laurent wrote:
> Merci pour vos réponses !
>
> Pour Harpo, la chaîne de caractère de début est "<?xml" et celle de
> fin est "</toto>"
>
> En fait, Stéphane, les exemples A0, A1, A2 sont en fait les chaînes
> de caractères :
> MAT_COLLAB VALUE
> MAT_RC VALUE
> DAP VALUE
> Comment est-ce que ça modifie ton script shell ?

[...]

Quelquechose comme:

awk -F '[[:blank:]]*=[[:blank:]]*' '
BEGIN {
idx["<MAT_COLLAB VALUE"] = 1
idx["<MAT_RC VALUE"] = 2
idx["<DAP VALUE"] = 3
}

!inside && /^<\?xml/ {
inside = 1
content = ""
split("_XX_XX_XX", a, "_")
}

!inside {next}

{content = content $0 "\n"}

(n = idx[$1]) && match($2, /^"[0-9]+"/) {
a[n] = substr($2, 2, RLENGTH-2)
next
}

/^<\/toto>/ {
file = "mon_" a[1] "_" a[2] "_" a[3]
printf "%s", content > file
close(file)
content = ""
inside = 0
}'

(pas testé mais tu as l'idee)

--
Stephane
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 03h25.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,12946 seconds with 15 queries