shell脚本分行、分词

本文介绍了如何利用shell脚本的内部字段分隔符(IFS)对文本文件进行分行和分词处理。默认情况下,IFS将空格、制表符和换行符作为字段分隔符。通过修改IFS的值,可以实现自定义分隔符。示例代码展示了如何以回车符分行和以空格分词,使文件处理变得简单易行。

利用shell脚本可以很容易的对文本文件进行分行、分词。
首先得先了解一个特殊的环境变量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语言编程处理文件放便多了。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值