URL: https://linuxfr.org/forums/programmation-shell/posts/cat-et-les-espaces Title: Cat et les espaces Authors: Raphaël Date: 2008年08月07日T19:30:39+02:00 Tags: Score: 0 Bonjour à tous, Je sais que cette question a déjà été traitée, mais je ne suis pas foutu de remettre la main sur les postes. Je me casse tout le temps les dents sur l'utilisation de cat pour lire itérativement les lignes d'un fichier dans une boucle for. Voici le dernier exemple en date : echo "Aix en Provence;EcoledArt;24;27;true" | sed 's/^\([A-Z].*\);.*;.*;.*;true$/1円/' va me renvoyer : Aix en Provence c'est ce que je cherche à obtenir, mais pour le contenu d'un fichier. Une partie du fichier en question : Marseille;SainteMarguerite;24;17;true Marseille;CinqAvenues;23;19;true Aubagne;PennesMirabeau;21;23;true Aix en Provence;EcoledArt;24;27;true Aix en Provence;LesPlatanes;25;28;true Toulon;Arsenal;38;12;true Toulon;LaValette;40;13;true Hyeres;hyeres;43;13;true la boucle que j'utilise : for ligne in $(cat fichier_source );do echo ${ligne} | sed 's/^\([A-Z].*\);.*;.*;.*;true$/1円/'; done et là, c'est le drame, parceque cat traite les bloques de caractères séparés par un espace et pas les lignes et je me retrouve avec : Aix en Provence Et je dois impérativement conserver mes espaces dans mes noms de stations. Ce n'est qu'un exemple du problème récurant que je rencontre avec cat. Je suppose qu'il existe une "bonne pratique" pour contourner ce genre de problème. Vos conseils m'aideraient beaucoup, je n'ai pas envie de passer à nouveau 2 plombes pour pondre un bout de script dégueu pour contourner le problème. Merci à tous, et bonne soirée ! PS : le vrai bout de code dans lequel ça coince : for ligne in $(cat ${fichier_source}) £spaces£ £/spaces£do £spaces£ £/spaces£fichier_ville="$(echo $ligne | sed 's/^\([A-Z].*\);.*;.*;.*;true$/1円/')" £spaces£ £/spaces£if [ ! -e ${chemin}/tmp/$fichier_ville ] £spaces£ £/spaces£then £spaces£ £/spaces£touch ${chemin}/tmp/$fichier_ville £spaces£ £/spaces£fi £spaces£ £/spaces£echo $ligne>> ${chemin}/tmp/$fichier_ville £spaces£ £/spaces£done

AltStyle によって変換されたページ (->オリジナル) /