J'ai file.txt que je dois lire dans un tableau Bash. Ensuite, je dois supprimer les espaces, les guillemets doubles et tout sauf la première virgule dans chaque entrée . Voici jusqu'où je suis allé:
$ cat file.txt
10,this
2 0 , i s
30,"all"
40,I
50,n,e,e,d,2
60",s e,e"
$ cat script.sh
#!/bin/bash
readarray -t ARRAY<$1
ARRAY=( "${ARRAY[@]// /}" )
ARRAY=( "${ARRAY[@]//\"/}" )
for ELEMENT in "${ARRAY[@]}";do
echo "|ELEMENT|$ELEMENT|"
done
$ ./script.sh file.txt
|ELEMENT|10,this|
|ELEMENT|20,is|
|ELEMENT|30,all|
|ELEMENT|40,I|
|ELEMENT|50,n,e,e,d,2|
|ELEMENT|60,se,e|
Ce qui fonctionne très bien, sauf pour la virgule. Je suis conscient qu'il existe plusieurs façons d'habiller ce chat, mais en raison du script plus important dont il fait partie, j'aimerais vraiment utiliser la substitution de paramètres pour arriver ici:
|ELEMENT|10,this|
|ELEMENT|20,is|
|ELEMENT|30,all|
|ELEMENT|40,I|
|ELEMENT|50,need2|
|ELEMENT|60,see|
Est-ce possible via la substitution de paramètres?
awk
oused
faire le traitement des données?