Tôi có file.txt mà tôi cần đọc vào một mảng Bash. Sau đó, tôi cần xóa dấu cách, dấu ngoặc kép và tất cả trừ dấu phẩy đầu tiên trong mỗi mục . Đây là bao xa tôi đã nhận được:
$ 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|
Mà hoạt động tuyệt vời ngoại trừ các dấu phẩy. Tôi biết rằng có nhiều cách để nuôi con mèo này, nhưng do tập lệnh lớn hơn nên đây là một phần của, tôi thực sự muốn sử dụng thay thế tham số để đến đây:
|ELEMENT|10,this|
|ELEMENT|20,is|
|ELEMENT|30,all|
|ELEMENT|40,I|
|ELEMENT|50,need2|
|ELEMENT|60,see|
Điều này có thể thông qua thay thế tham số?
awk
hoặcsed
xử lý dữ liệu?