在shell/ target=_blank class=infotextkey>shell脚本编程中,内部字段分隔符(Internal Field Separator,IFS)是一个相当重要的符号。
在处理文本数据时,非常有用。
本节就与大家一起学习下,这个可以把单个数据流划分成不同数据元素的定界符。
内部字段分隔符是用于特定用途的定界符。IFS是存储定界符的linux环境变量。它是当前shell环境使用的默认定界字符串。
下面通过具体的例子,来学习IFS定界符的用法。
假如需要迭代一个字符串或csv(Comma Separtor value,逗号分隔型数值)中的单词。
对于字符串,定界符IFS一般用“.”。而csv文件,定界符IFS一般用”,“。
例1,处理csv数据
输出结果,如下图:
IFS的默认值为空白字符(换行符、制表符或空格)。
当IFS被设置为逗号时,shell将逗号解释成一个定界符,因此变量$item在每次迭代时读取由逗号分隔的字符串作为变量值。
如果没有把IFS设置成”,“,则以上脚本会将$data中的全部数字作为单个字符串打印出来。
再来看个例子,在学习shell编程的日子里,再次体会到例子是学习进步的阶梯,哈哈。
以/etc/passwd为例,看看IFS的另一种用法。
这个例子稍显复杂,用到了head命令以及二层for循环,初学的朋友细细体会吧。
例2:
输出结果,如下图: