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.