#1 Le 09/02/2018, à 13:37
- MichelZ
[Résolu] Ne trouve pas le caractère "retour chariot" dans un fichier
Bonjour,
Dans un shell, je veux récupérer des données d'un fichier .vcf, par exemple le nom du contact, il est contenu entre la chaine "FN:" et la fin de la ligne, exemple :
BEGIN:VCARD
VERSION:2.1
N:;Gérard;;;
FN:Gérard
TEL;CELL:06 99 06 99 06
END:VCARD
BEGIN:VCARD
VERSION:2.1
N:F;Claude;;;
FN:Claude
TEL;CELL:01 99 01 99 01
END:VCARD
Je fais donc :
a=$(</home/x/Bureau/Smartphone/2018-02-07/Contact/contact.vcf)
a=${a#*FN:}; b=${a%%\r*}
Ça ne marche pas : il fait bien la 1ère commande (partie droite de "FN:") mais ensuite ne coupe pas à la fin de la ligne mais sur le 1er caractère "r" qu'il trouve.
Pourtant j'ai vérifié le contenu du fichier en hexa, y a bien \0d \0a en fin de chaque ligne.
Dernière modification par MichelZ (Le 09/02/2018, à 15:04)
Hors ligne
#2 Le 09/02/2018, à 14:31
- credenhill
Re : [Résolu] Ne trouve pas le caractère "retour chariot" dans un fichier
hello
remplacer \r par $'\r'
a=${a#*FN:}; b=${a%%$'\r'*}
Hors ligne
#3 Le 09/02/2018, à 14:45
- bruno
Re : [Résolu] Ne trouve pas le caractère "retour chariot" dans un fichier
Salut,
j'aurais dit :
${a%%[$'\r\n']*}
sinon, il serait peut-être aussi simple de lire le fichier ligne par ligne.
#4 Le 09/02/2018, à 15:02
- MichelZ
Re : [Résolu] Ne trouve pas le caractère "retour chariot" dans un fichier
Super, ça marche ! Merci à tous les 2.
Lire le fichier ligne par ligne ? J'y ai pensé mais je ne veux récupérer que les champs "FN" et "TEL" donc ça m'obligerait à faire une sélection derrière...
Hors ligne