shell脚本分行、分词
2016-02-29 11:55
1991 查看
利用shell脚本可以很容易的对文本文件进行分行、分词。
首先得先了解一个特殊的环境变量IFS(internal field separator);
这个环境变量定义了bash shell用作字符分割符的一系列字符。在默认的情况下,IFS以以下字符作为字段分割符:
空格
制表符
换行符
bash shell遇到以上任一字符,则认为遇到一个新的字符段。有时为了方便处理文件,我们需要一个或者更多个字段分割符,我们可以利用以下语句更改IFS;
为了防止在脚本中定义了新的字段分割符,而在脚本结束后忘记恢复IFS默认值,在写shell脚本时可以这样写:
具体的代码:
处理文件
this is IFS test file
changing the IFS calue
hello world
1:shell脚本分行代码
代码很简单,以回车为字段分割符去处理文件。
2:脚本分词
处理结果:
this is IFS test file
this
is
IFS
test
file
changing the IFS calue
changing
the
IFS
calue
hello world
hello
world
测试实例通过,利用IFS这个环境变量可以很方便的处理文件。比用c语言编程处理文件放便多了。
首先得先了解一个特殊的环境变量IFS(internal field separator);
这个环境变量定义了bash shell用作字符分割符的一系列字符。在默认的情况下,IFS以以下字符作为字段分割符:
空格
制表符
换行符
bash shell遇到以上任一字符,则认为遇到一个新的字符段。有时为了方便处理文件,我们需要一个或者更多个字段分割符,我们可以利用以下语句更改IFS;
IFS=$':' #一个分割符时,将会以冒号为分割符 IFS=$'\n:;' #多个分割符,将会以回车、冒号、分号作为分割符
为了防止在脚本中定义了新的字段分割符,而在脚本结束后忘记恢复IFS默认值,在写shell脚本时可以这样写:
IFS_OLD=$IFS #保存默认IFS值 IFS=$'\n' #自定义的分割符 ##<使用新的IFS的脚本代码>## IFS=$IFS_OLD #脚本结束后,恢复默认值
具体的代码:
处理文件
vim test_file
this is IFS test file
changing the IFS calue
hello world
1:shell脚本分行代码
vim ifs_test.sh
#!/bin/sh FILE=test_file #文件名字需要改为要处理的文件名 IFS_OLD=$IFS IFS=$'\n' for line in `cat $FILE` do echo $line done IFS=$IFS_OLD
代码很简单,以回车为字段分割符去处理文件。
2:脚本分词
vim ifs_test.sh
#!/bin/sh FILE=test_file #文件名字需要改为要处理的文件名 IFS_OLD=$IFS IFS=$'\n' for line in `cat $FILE` do echo $line IFS=$' ' for word in `echo $line` do echo $word done done IFS=$IFS_OLD
处理结果:
chmod u+x ifs_test.sh ./ifs_test.sh
this is IFS test file
this
is
IFS
test
file
changing the IFS calue
changing
the
IFS
calue
hello world
hello
world
测试实例通过,利用IFS这个环境变量可以很方便的处理文件。比用c语言编程处理文件放便多了。
相关文章推荐
- android wifi 无线调试
- 垃圾邮件过滤器 python简单实现
- 运维入门
- 动态清空 nohup 输出文件
- install scrapy with pip and easy_install
- Linux Shell常用技巧
- Shell 脚本编程陷阱
- VBS脚本写的Windows硬件检测工具分享
- 用vbscript实现隐藏任务栏图标的脚本
- 用autoit编写第一个脚本(Hello World)
- VBS调用WMI快速关闭IE的脚本
- Oracle数据库执行脚本常用命令小结
- 收集的ROS防火墙脚本
- JSP脚本漏洞面面观
- shell字符串操作详解
- 不错的批处理脚本 第一部分
- VBS脚本加密/解密VBS脚本(简易免杀版1.1)
- 不错的批处理脚本实例代码 第二部分