Ich habe file.txt, die ich in ein Bash-Array einlesen muss. Dann muss ich Leerzeichen, doppelte Anführungszeichen und alle bis auf das erste Komma in jedem Eintrag entfernen . So weit bin ich gekommen:
$ 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|
Was bis auf die Kommasituation gut funktioniert. Ich bin mir bewusst, dass es mehrere Möglichkeiten gibt, diese Katze zu häuten, aber aufgrund des größeren Skripts, zu dem dies gehört, würde ich wirklich gerne die Parametersubstitution verwenden, um hierher zu gelangen:
|ELEMENT|10,this|
|ELEMENT|20,is|
|ELEMENT|30,all|
|ELEMENT|40,I|
|ELEMENT|50,need2|
|ELEMENT|60,see|
Ist dies durch Parametersubstitution möglich?
awk
oder durchführensed
?