ある入力データの文字列をフィールドごとに分割する方法です。
IFSを使用する方法
$ vi field_split_IFS.bash
#!/bin/bash
I_DATA="apple,banana,orange"
IFS=',' read -r -a ARRAY <<< "${I_DATA}"
i=0
while [[ $i -lt ${#ARRAY[@]} ]]; do
echo "FIELD$((i+1)) = ${ARRAY[$i]}"
((i++))
done
$ chmod +x field_split_IFS.bash
$ ./field_split_IFS.sh
FIELD1 = apple
FIELD2 = banana
FIELD3 = orange
cutコマンドを使用する方法
$ vi field_split_cut.sh
#!/bin/bash
I_DATA="apple,banana,orange"
FIELD_COUNT=$(echo "${I_DATA}" | awk -F',' '{print NF}')
i=1
while [[ ${i} -le ${FIELD_COUNT} ]]; do
FIELD=$(echo "${I_DATA}" | cut -d',' -f"${i}")
ARRAY+=("${FIELD}")
((i++))
done
j=0
while [[ ${j} -lt ${#ARRAY[@]} ]]; do
echo "FIELD$((j+1)) = ${ARRAY[$j]}"
((j++))
done
$ chmod +x field_split_cut.sh
$ ./field_split_cut.sh
FIELD1 = apple
FIELD2 = banana
FIELD3 = orange
awkコマンドを使用する方法
$ vi field_split_awk.sh
#!/bin/bash
I_DATA="apple,banana,orange"
echo "${I_DATA}" | awk -F',' '{
for (i = 1; i <= NF; i++) {
printf("FIELD%d=%s\n", i, $i)
}
}'
$ chmod +x field_split_awk.sh
$ ./field_split_awk.sh
FIELD1 = apple
FIELD2 = banana
FIELD3 = orange
sedコマンドを使用する方法
$ vi field_split_sed.sh
#!/bin/bash
I_DATA="apple,banana,orange"
i=1
echo "${I_DATA}" | sed 's/,/\'$'\n/g' | while read -r LINE; do
echo "FIELD${i}=${LINE}"
((i++))
done
$ chmod +x field_split_sed.sh
$ ./filed_split_sed.sh
FIELD1 = apple
FIELD2 = banana
FIELD3 = orange