Re: bash enlever le retour chariot de chaque ligne d'un fich…

Page principale

Répondre à ce message
Auteur: Marc
Date:  
À: guilde
Sujet: Re: bash enlever le retour chariot de chaque ligne d'un fichier
Le 10/12/2017 à 12:32, anne.guilde@??? a écrit :
> bonjour
>
> Je suis en bash.
> Je lis un fichier et j'analyse chaque ligne.
>
> Chaque ligne a cette forme :
> texte1:texte2\r
>
> ----
> ...
> fichier1='Contacts_orig.vcf'
> fichier='Contacts_modif.vcf'
>
> `tr -d '\r' < $fichier1 > $fichier `
>
> while read line
> do
>     debut_lig=`echo $line | cut -d':' -f 1`
>     fin_lig=`echo $line | cut -d':' -f 2`
> #    fin_lig1=`echo $line | cut -d':' -f 2`
> #    fin_lig=`echo $fin_lig1 | cut -d '\r' -f 1`
> #    line1=$line
> ...
> done < $fichier
> ----
>
> J'ai eu un problème avec la commande cut.
> La commande cut ne doit avoir qu'un caractère
> Je n'ai pas su enlever le \r (retour chariot) dans texte2.
>
> La solution trouvée a été d'utiliser la commande tr pour enlever les \r
>
> Si vous aviez la solution sans utiliser la commande tr... (sans
> dupliquer le fichier)


Comme tu es toujours dans le contexte de la transformation de tes
V-Cards, il faut tenir compte du fait que la terminaison normale d'une
fin de ligne de V-Card est 'CR-LF', '0x0D,0x0A', '\r\n'.


D'autre part, tu as dans ton code :

fin_lig=`echo $line | cut -d':' -f 2`

Dans certains cas, ça va marcher parce que tu n'auras qu'un seul ':'
dans la ligne, mais dans d'autres cas où tu auras un deuxième ':' (avec
une URL Web https://... par exemple), ta fin de ligne sera tronquée

--
Marc BERLIOUX
Tous ceux qui parlent dans mon dos,
mon cul les regarde.