Bonjour,
j'ai une chaine de caractères où le séparateur est ';' et pouvant contenir des espaces significatives, par exemple "a;b c;d;e".
Je voudrais faire une boucle dans laquelle une variable prendrait successivement les valeurs "a" "b c" "d" "e".
Je sais le faire en awk:
Je voudrais savoir s'il est possible de le faire avec un très vieux bash 3.2.57 de 2007, par exemple, en transférant la chaîne dans un tableau indexé, mais en utilisant un séparateur ';' et non espace.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ echo "a;b c;d;e" | awk -F';' '{for (nf = 1; nf < NF; nf++) { x=$nf; print "-" x "-" }}' -a- -b c- -d-
J'ai essayé toutes sortes de choses avec declare -a tab. À un moment je pensais avoir trouvé avec ceci qui imprime bien le tableau... mais qui n'a qu'un seul élément:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 $ tab=($(printf "a;b c;d;e" | tr ';' '\n')) $ printf '%s\n' "${tab[@]}" a b c d e $ echo "${#tab[@]}" 1Si quelqu'un a une idée, je suis preneur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 $ echo "a;b c;d;e" | read -d ';' -a tab $ echo "${#tab[@]}" 0
Partager