aide pour awk

Page principale

Répondre à ce message
Auteur: anne aublanc
Date:  
À: guilde
Sujet: aide pour awk
bonjour,

j'ai un fichier qui contient :
FAX-Nr: 87654321 FAX-Name: totozzxx C'est un essai
ou
A l'attention de : FAX-Name :totozzxx sdf --- C'est un essai FAX-Nr :
12345-6789 --- zdergf

les 2 zones suivantes peuvent se trouver n'importe où dans le texte
FAX-Nr: dddddddd --- (d=chiffre)
FAX-Name: xxxxxxxxx ---

J'ai le script suivant  (on le trouve sur le net sous les noms faxfilter, 
smbfax, sambafax)  :
FAXNUM=`ps2ascii ${FAXFILE} | awk '{ IGNORECASE=1 } /FAX-Nr ?: ?[0-9-]*/ \
         {  $0=$0 "xxx"; \
            gsub(/-/,""); \
            anfang=match($0,/ ?: ?/); \
            anfang=anfang+match(substr($0,anfang),/[0-9]/)-1; \
            ende=match(substr($0,anfang),/[^0-9]/)-1; \
            printf ("%s",substr($0,anfang,ende)) \
         }' `


J'ai modifié un peu la chose... y-avait des petits bugs, genre j'avais mis
des lettres au lieu des chiffres pour FAX-Nr et je voulais pouvoir récupérer
des zones alphanum...

Pour les zones numériques :

FAXNUM=`ps2ascii ${FAXFILE} | awk '{ IGNORECASE=1 } /FAX-Nr ?[ ] ?:
?[0-9-]*/ \
{ $0=$0 "xxx"; \
anfang=match($0,/FAX-Nr ?[ ] ?: ?/); \
anfang=substr($0,anfang); \
gsub(/^FAX-Nr[ ]*[:][ ]*/,"",anfang); \
gsub(/[ ]*---.*/,"",anfang); \
gsub(/[^0-9]/,"",anfang); \
printf ("%s", anfang) \
}' `

Pour les zones alphanum :

FAXNAME=`ps2ascii ${FAXFILE} | awk '{ IGNORECASE=1 } /FAX-Name ?[ ] ?:
?[0-9a-zA-Z]*/ \
{ $0=$0 "xxx"; \
anfang=match($0,/FAX-Name ?[ ] ?: ?/); \
anfang=substr($0,anfang); \
gsub(/^FAX-Name[ ]*[:][ ]*/,"",anfang); \
gsub(/[ ]*---.*/,"",anfang); \
printf ("%s", anfang) \
}' `

J'aimerai avoir votre avis sur ce code...et vos conseils! ;o)

anne