将数组元素拆分为多个字符串

时间:2019-11-27 18:51:18

标签: bash

我有这个数组:

info=('John;10;03-03-2019;john@123' 'Mike;20;20;03-03-2019;mike@123')

我需要按如下所述将其分开:

  • [0]约翰10年,日期03-03-2019

  • [1]迈克20年,于03-03-2019

我只有这个:

IFS=';' read -r -a ADDR <<< "$info"

for i in "${ADDR[@]}; 
do
    echo -n "Name:$i"
done

2 个答案:

答案 0 :(得分:0)

您可以使用以下读取语句将特定的数组条目信息[ix]拆分为字段

IFS=';' read name years date email <<< "${info[$ix]}"

echo "Name=$name, email=$email, ..."

答案 1 :(得分:0)

newinfo=()
for item in "${info[@]}"; do 
    IFS=";" read -ra fields <<<"$item" 
    newinfo+=("${fields[0]} ${fields[1]} years at ${fields[2]}")
done
declare -p newinfo
declare -a newinfo=([0]="John 10 years at 03-03-2019" [1]="Mike 20 years at 20")

或者:

newinfo=()
for item in "${info[@]}"; do 
    IFS=";" read -ra fields <<<"$item" 
    printf -v newinfo[i++] "%s %s years at %s" "${fields[@]:0:3}"
done

i变量在首次使用时将被视为零。