Linux Shell学习:如何对文件中的行、单词、字符进行迭代

在进行文本文件进行处理时,对文件件中的行、单词、字符进行迭代和遍历是非常常用的操作。而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行、单词、和字符进行迭代的基本方法。

废话不多说,马上来看看怎么样实现吧。

1、迭代文中的每一行
使用while循环从标准输入中读取,因为要在标准输入中读取,就要对文件进行重定向,使它重定向到stdin中,代码如下:

while read line;
do
echo $line;
done < file.txt

代码的第一行从stdin中读取一行,而stdin的来源为file.txt,因为最后一行用数据流重定向,把file.txt的内容重定向到了stdin。

2、迭代一行中的每一个单词
我们可以用for循环来迭代一行中的单词,代码如下:

read line;
for word in $line;
do
echo $word;
done

代码的第一行,从stdin中读取一行,然后用for循环迭代一行中的所有单词,并输出,真是非常简单实用。

3、迭代一个单词中的每一个字符
从单词中迭代每一个字符,可以说是这三种迭代中最困难的一种,因为从单词中提取字符需要一定的技巧,其方法如下:

利用for循环对变量i进行迭代,迭代范围从0到字符的长度-1。那如何取出单词中的字符呢?我们可以借助一个特殊的表达式来取出单词中的第i个字母,${string:start_position:count_of_characters},它的意思是,返回字符串string中,从第start_position起的count_of_characters个字符组成的字串,对于迭代一个单词中的第一个字符,当然是从string的第i个字符起,返回长度为1的子串,这就是子串提取技术。所以代码如下:

for((i=0; i<${#word}; ++i))
do
echo ${word:i:1};
done

注:${#word}返回变量word的值的长度,即单词的长度。

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/OS/Linux/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索文件
, 第一行代码
, 迭代
, 字符
, 单词
, 读取一行
, stdin
, 第一行代码androidgit
, 重定向循环
, 一个
, 循环读取
, 一行
迭代循环
,以便于您获取更多的相关知识。

时间: 2024-10-27 03:35:17

Linux Shell学习:如何对文件中的行、单词、字符进行迭代的相关文章

如何实现linux中将一个文件中的包含某个字符的所有行按照原来的顺序拷贝到另外一个文件中?

问题描述 如何实现linux中将一个文件中的包含某个字符的所有行按照原来的顺序拷贝到另外一个文件中? 在文件/usr/share/mime/pac kages/freedesktop.org.xml 中查找所有包含 ich 的行,将找 出的行按照先后顺序拷贝到/root/lines 文件中,/root/lines 文件不包含空格,并且其中行的内容是源文件/usr/share/mime/pac 解决方案 可以先用grep命令搜索ich包含的行,定向到一个临时文件,然后打开/root/lines 文

Shell脚本对文件中的行、单词、字符进行迭代输出示例_linux shell

在进行文本文件进行处理时,对文件件中的行.单词.字符进行迭代和遍历是非常常用的操作.而将一个简单的循环用于迭代,再加上来自stdin或文件的重定向,这就是对文件中的行.单词.和字符进行迭代的基本方法. 废话不多说,马上来看看怎么样实现吧. 1.迭代文中的每一行 使用while循环从标准输入中读取,因为要在标准输入中读取,就要对文件进行重定向,使它重定向到stdin中,代码如下: 复制代码 代码如下: while read line;  do  echo $line;  done < file.t

c++-VS软件弹出以下文件中的行尾不一致。是否将行尾标准化,如果我选了,如果以后想换,如何弄

问题描述 VS软件弹出以下文件中的行尾不一致.是否将行尾标准化,如果我选了,如果以后想换,如何弄 VS软件弹出以下文件中的行尾不一致.是否将行尾标准化,如果我选了,如果以后想换,如何弄 解决方案 文件格式不同而已,t一般是你文件是从linux过来的,所有VS建议转换成windows格式.如果你以后想转换回linux格式,可以把文件放到Linux,然后u用dos2unix命令转换一下. 解决方案二: 你是否是用 VS 打开了类似于 Linux 下的源代码?如果是,有这样的提示不奇怪的. 就是回车换

c++-用C++读取文件中特定行的某几列数据并输出到另一个文件

问题描述 用C++读取文件中特定行的某几列数据并输出到另一个文件 AR ZIMM 2014 06 30 00 00 0.000000 2 2.175456910513e-08 1.929140019560e-11AR ZWE2 2014 06 30 00 00 0.000000 2 -6.930289135325e-03 2.317673679230e-11AS G01 2014 06 30 00 00 0.000000 2 1.652894267903e-05 1.737915981300e-

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

编写不同的文本处理和文件操作脚本时,通常需要对文件中的行,单词和字符进行迭代,尽管这个问题看 起来很简单,但是实现起来却常常出现问题,下面,就让我们来看看怎样实现上述功能. 为了实现上 述的功能,我们需要分三个步骤叙述 一.迭代文件中的每一行 我们可以通过用一个 while 循环 从标准输入中读取,因此,它在每一次迭代中都会读取一行. 下面的方法可以将stdin 重定向到文件 : 首先我们看下文件中的内容是怎样的: NO Hello Mark Percent 1 Sarath 45 90 2 A

字体-C#中如何判断TTF文件中是否包含某个字符

问题描述 C#中如何判断TTF文件中是否包含某个字符 如图,所要实现的功能就是根据输入的文字,生成相应字体的图片预览,用的是Graphics.DrawString方法,但是遇到字体中没有的字符,会以其他字体显示出来,这里想要的功能就是如何判断字库文件里有没有这个字,如果没有统一替换成一个圆圈符号.没有头绪,网上看到用其他语言实现的,但是真的新手,不会调用,想知道C#下怎么实现这个功能. 解决方案 http://stackoverflow.com/questions/103725/is-there

数据-android 验证读取的文件中是否包含特定字符

问题描述 android 验证读取的文件中是否包含特定字符 例如,一个txt文件中,有 a1,a2,a3, b1,b2,b3, c1,c2,c3, d1,d2,d3.....多组数据, 我程序中istrue(string str1,string str3,string str3){}方法怎么实现 str1,str2,str3三个数据在txt文件中存在,并且是一组数据?请教大神 解决方案 每次从这个txt文件里取出三个string即可 解决方案二: 把txt文件按字节读取,然后split分割,我想

java-如何提用Java取文件中几行特定的内容

问题描述 如何提用Java取文件中几行特定的内容 做的项目中有一个是提取一些实例,要有年份的限制,但每个实例都有特性. 要把#* 到#!提取出来相应#t哪里要有个限制 各位大神解决这样的问题如何用java实现呢 解决方案 JAVA正则处理就OK了.

Linux Shell学习:如何调用Shell中的函数

说起函数调用,相信大家也不会陌生,然而对于初学Shell的我来说,Shell中函数调用方式却有点让我不太习惯,自己也走了不少的弯路,因为传递参数时出了一个很"自然"的错误,也让我吃了不少的苦头,所以总结一下Shell中函数的调用方法. 一.Shell中函数的定义 为了方便程序和管理和模块化并减少代码的重复,函数的确是一个好东西.而Shell中函数的定义有两种方法,如下: function fname() { statements: } 或 fname() { statements; }