对文件中的行,单词和字符进行迭代

编写不同的文本处理和文件操作脚本时,通常需要对文件中的行,单词和字符进行迭代,尽管这个问题看起来很简单,但是实现起来却常常出现问题,下面,就让我们来看看怎样实现上述功能。

为了实现上述的功能,我们需要分三个步骤叙述

一.迭代文件中的每一行

我们可以通过用一个 while 循环从标准输入中读取,因此,它在每一次迭代中都会读取一行。

下面的方法可以将stdin 重定向到文件:

首先我们看下文件中的内容是怎样的:

NO	Hello	Mark	Percent
1	Sarath	45	90
2	Alex	49	98
3	Anu	45	90

下面给出实现的脚本:

#!/bin/bash
while read line
do 
echo $line
done < data.txt

运行下我们的脚本,结果如图所示:



二.迭代一行中的每一个单词

我们同样可以用while循环得到每一行,之后利用 IFS 获取一行的各个字段

下面给出实现的脚本:

#!/bin/bash
while read line
do 
for word in $line
do 
echo $word;
done
done < data.txt	

运行下我们的脚本,结果如图所示:



三.迭代一个单词中的每一个字符

我们利用一个 for 循环对变量 i 进行迭代,迭代范围从0到字符串的长度。在每次迭代中,我们可以用一个特殊的记法:

${string:start:position:No_of_characters}

意思是:从字符串中提取一个字符

这被称为是子串提取技术,${word:start:position:No_of_characters} 返回变量word所包含的字符串中的一个子串

${#word} 返回变量的长度

下面给出实现的脚本:

#!/bin/bash
while read line
do 
for word in $line
do 
for(( i=0;i<${#word};i++ ))
do
echo ${word:i:1};
done
done
done < data.txt	

运行下我们的脚本,结果如图所示:


说明:由于显示的内容太长,这里的截图显示的只是输出的一部分字符

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值