Re: awk sed ou autre

Top Page

Reply to this message
Author: anne.guilde@free.fr
Date:  
To: ML Guilde
Subject: Re: awk sed ou autre
Le 09/02/2020 à 15:16, guilde.nt@??? a écrit :
> Quoting anne.guilde@???, Sun 9 Feb 2020, 03:05 +0100 CET :
>> exemple de fichier
>> ---BEGIN:VCARD
>> (...)
>> le résultat :
>> FN:Aprenom5 Anom5;1
>> FN:Aprenom4 Anom4;3


Merci pour vos
Bon j'ai fait en bash

---
#!/bin/bash

# set -x

fichier=$1

# Chaque ligne de fichier1 a cette forme :
# texte1:texte2\r
# \r = retour chariot
# Si la ligne n'est pas de la forme texte1:texte2\r, c'est l'encodage
d'une photo

declare -a tableau

while IFS=$':\r' read debut_lig fin_lig suite_lig
do

# BEGIN = première linge du contact
    if [[ $debut_lig = "BEGIN" ]]  ; then
        numtel=0
        index=0
    fi


# END = dernière ligne du contact
    if [[ $debut_lig = "END" ]] ;     then
        tableau=("${tableau[@]}" "$numtel")
        echo ${tableau[@]}
        unset tableau
    fi


# Ananyle les lignes entre BEGIN et END
    if  [[ $debut_lig != "BEGIN" ]] && [[ $debut_lig != "END" ]]  ;    then
        if [[ -n $fin_lig ]] ; then


# Ajout de l'entrée dans le tableau
# Si l'entrée = FN, c'est le nom du contact.
            if [[ $debut_lig = "FN" ]]  ;     then
                tableau=("${tableau[@]}" "$fin_lig; ")
                let index++
            fi
# compter le nombre de ligne qui commence par TEL dans une vcard
            if [[ $debut_lig =~ ^TEL* ]]  ;     then
                let numtel++
            fi
        fi
    fi


done < $fichier
---

Anne