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用于备份默认的分隔符,使用完后将之恢复默认。
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
但是实际上用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:16097482|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
相关文章推荐
- shell对字符串分割存入数组中
- shell 分割字符串存至数组
- 【Shell】linux shell将字符串分割成数组
- Shell_Linux 将字符串分割为数组
- shell 将字符串分割成数组
- shell 分割字符串存至数组
- shell 将字符串分割成数组
- 【Linux】shell字符串分割、数组访问、条件判断
- Shell通过特定字符把字符串分割成数组
- Unix系统的SHELL程序如何将字符串分割成数组
- shell 将字符串分割成数组
- shell 分割字符串存至数组
- shell 将字符串分割成数组
- shell 分割字符串存至数组
- javascript字符串分割为数组
- split 将字符串分割成字符串数组
- 简单的拼接字符串方法 新建数组 然后push()进去内容 最后join(“”)分割
- Shell 字符串拆分成数组
- shell 字符串分割 / /
- Shell 数组元素个数${#array[@]} 数组的所有元素${array[*]} 字符串长度${#str}