shell基础知识7-字段分隔符与迭代器
什么是内部字段分隔符
内部字段分隔符(Internal Field Separator,IFS)是shell脚本编程中的一个重要概念。在处理
文本数据时,它的作用可不小。
作为分隔符,IFS有其特殊用途。它是一个环境变量,其中保存了用于分隔的字符。它是当
前shell环境使用的默认定界字符串。我们可以查看$IFS这个变量,从而看出这个分隔符。
[root@dns-node2 tmp]# echo $IFS
更换分隔符从而切分字符串
考虑一种情形:我们需要迭代一个字符串或逗号分隔型数值(Comma Separated Value,CSV)
中的单词。如果是前者,可以使用 IFS=" " ;如果是后者,则使用 IFS="," 。
[root@dns-node2 tmp]# cat testIFS.sh
#!/bin/bash
data="name,age,sex,telphone_number,location"
oldIFS=$IFS
IFS=,
for i in $data
do
echo item: $i
done
IFS=$oldIFS
[root@dns-node2 tmp]# sh testIFS.sh
item: name
item: age
item: sex
item: telphone_number
item: location
以上就是没有使用awk来做指定分隔符,直接更改IFS来切分字符串,厉害吧。
接下来看看下面下面例子:
[root@dns-node2 tmp]# cat testIFS2.sh
#!/bin/bash
line="root:x:0:0:root:/root:/bin/bash"
IFS=":"
for i in $line
do
echo $i
done
[root@dns-node2 tmp]# bash testIFS2.sh
root
x
0
0
root
/root
/bin/bash
tips
可以使用echo 来输出序列,例如下面的数据:
[root@dns-node2 tmp]# echo {1..500}
[root@dns-node2 tmp]# echo {a..z}
[root@dns-node2 tmp]# echo {A..z}