URL: https://linuxfr.org/forums/programmation-shell/posts/bash-regexp Title: Bash, regexp Authors: GG Date: 2014年03月12日T07:45:07+01:00 License: CC By-SA Tags: Score: 3 Bonjour, je cherche à séparer des données d'une chaîne de caractère pour les écrire dans un tableau ou plusieurs variables, en bash. La chaîne peut resembler à ceci: 'toto','tata' ,'titi' , 'ici avec espace','et, éventuellement\'comme ça' On a donc: 'toto' 'tata' 'titi' 'ici avec espace' 'et, éventuellement\'comme ça' Les espaces ne sont pas protégés par un \ (et même si cela avait été le cas, j'aurais été autant ennuyé). J'ai parfois des caractères blancs autour des virgules. J'ai essayé plein de trucs. Je peux séparer les champs avec awk en utilisant le délimiteur ' mais il faudrait que je puisse préciser de ne pas considérer les \' J'ai aussi essayé avec sed, mais si j'écris : sed "s/[\^\\\\]'[\ ]*,[\ ]*'/'\n'/g" cela me mange le dernier caractère de chaque champs, pourtant il me semblait que [\^\\\\] c'était pour exclure le \ Donc, avec sed "s/'[\ ]*,[\ ]*'/'\n'/g" j'ai à peu près un résultat potable, mais je dois renoncer à traiter le cas des espaces dans les champs (pour le moment je n'ai qu'un seul cas comme ça) Une fois ma chaîne nettoyée, j'utilise la commande suivante pour créer mon tableau: read -a tableau <<< ${chaine} Bien sur, dans le sed, je peux me contenter d'utiliser l'espace comme séparateur, puisque de toute façon le read -a s'en servira comme séparateur. Si vous avez un moyen pour que les caractères échappés soient ignorés comme séparateurs, ou des suggestions... cela me rendrait grand service. Merci G