您的位置:首页 > 运维架构 > Shell

shell 分割字符串存至数组

2013-03-14 14:26 316 查看
shell编程中,经常需要将由特定分割符分割的字符串分割成数组,多数情况下我们首先会想到使用awk

但是实际上用shell自带的分割数组功能会更方便。假如

a=”one,two,three,four”

要将$a分割开,可以这样:

OLD_IFS=”$IFS”

IFS=”,”

arr=($a)

IFS=”$OLD_IFS”

for s in ${arr[@]}

do

echo “$s”

done

上述代码会输出

one

two

three

four

arr=($a)用于将字符串$a分割到数组$arr ${arr[0]} ${arr[1]} … 分别存储分割后的数组第1 2 … 项 ,${arr[@]}存储整个数组。变量$IFS存储着分隔符,这里我们将其设为逗号 “,” OLD_IFS用于备份默认的分隔符,使用完后将之恢复默认。

对文件中的字符串切割放到数组中

7481|1|1359475743|1014|1|14.223.145.61:1609

7482|1|1359475752|1014|3|14.223.145.61:1609

7483|1|1359475754|3544|1|121.61.222.187:2971

7484|1|1359475758|11541|3|183.187.51.156:2582

filename='aa.log' #文件路径

OLD_IFS="$IFS"

IFS="|"

i=0

if [ -f ${filename} ];then

while read line

do

arr=($line)

echo ${arr[0]}_${arr[1]}_${arr[2]}_${arr[3]}_${arr[4]}_${arr[5]}_${i}

i=$((i+1))

done < ${filename}

fi
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: