Re: aide pour expression régulière

Page principale

Répondre à ce message
Auteur: Michel Karatchentzeff
Date:  
À: liste Guilde
Sujet: Re: aide pour expression régulière
On Thu, 12 Dec 2002, anne aublanc wrote:

>
> J'ai des lignes de ce type :
>
> totpages:1
> ntries:0
> ndials:3
> sender:anne
> jobid:44
> jobtag:
> pagehandling:21P
> chopthreshold:3
> !tiff:0::docq/doc44.tif
>
> Je veux séparer les 2 champs de la ligne. Le 1er champ va jusqu'au ":", le
> 2ème c'est tout ce qui suit.
>


Je suis peut être hors du sujet (cela dépend de la façon dont on veut
traiter les données), mais j'ai l'impression que j'aurais abordé
le problème avec awk

awk 'BEGIN{FS=":"}{print$1}'
    choisit dans chaque ligne de l'entrée standard le caractère : comme
          séparateur de champ (FS = file separator)
    imprime sur la sortie standard le premier champ ($1)
Il est alors facile de le mettre dans une variable


premier_champ=`awk 'BEGIN{FS=":"}{print$1}'`

(ne pas se tromper dans les accents).

Si on veut grouper en un seul champ tout les autres champs, on peut se
servir d'une boucle comme dans

echo '!tiff:0::docq/doc44.tif' | awk 'BEGIN{FS=":"}{for (i = 1; i <= NF;
i++) printf$i}'

[les ' à la suite d'echo sont nécessaires à cause du !;
le printf (qui fonctionne comme en C avec la même syntaxe)
rassemble tout sur une me ligne]

Michel

--
Michel Karatchentzeff
mk@???                            karat@???
Fondation Louis de Broglie, 23, rue Marsoulan, 75012 Paris, FRANCE


Merci de ne pas ajouter, sauf nécessité, ce message à votre réponse.
J'en dispose déjà d'un double.