时间:2021-05-22
经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下:
read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符。VariableName (变量名)参数指定给每一个字段的值,由 VariableName (变量名)参数指定的以此类推,直到最后一个字段。
read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.
利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本.
当文件没有可读的行时,read命令将以非零状态退出.
cat data.dat | while read linedo echo "File:${line}"donewhile read linedo echo "File:${line}"done < data.datawk是一种优良的文本处理工具,提供了极其强大的功能.
语法格式:awk [选项] '指令' 操作文件
常用选项:-F 指定分隔符,分隔符用""引起来
-v:var=value在awk程序开始之前指定一个值valu给变量var,这些变量值用于awk程序的BEGIN快
-f:后面跟一个保存了awk程序的文件,代替在命令行指定awk程序
利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据.
cat data.dat | awk '{print $0}' cat data.dat | awk 'for(i=2;i<NF;i++) {printf $i} printf "\n"}'第1行代码输出data.dat里的每行数据,第2代码输出每行中从第2列之后的数据.
如果是单纯的数据或文本文件的按行读取和显示的话,使用awk命令比较方便.
for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.
for line in $(cat data.dat)do echo "File:${line}"donefor line in `cat data.dat`do echo "File:${line}"done如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.
如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.
可以通过把IFS设置为换行符来达到逐行读取的功能.
IFS的默认值为:空白(包括:空格,制表符,换行符).
到此这篇关于Shell脚本如何逐行处理文本文件的文章就介绍到这了,更多相关Shell处理文本文件内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
什么是Shell脚本?Shell脚本(英语:Shellscript)是一种电脑程序与文本文件,内容由一连串的shell命令组成,经由UnixShell直译其内容
本文实例讲述了python实现按行切分文本文件的方法。分享给大家供大家参考,具体如下:python脚本利用shell命令来实现文本的操作,这些命令大大减少了我们
本文实例讲述了C#处理文本文件TXT的方法。分享给大家供大家参考。具体分析如下:1.如何读取文本文件内容:这里介绍的程序中,是把读取的文本文件,用一个richT
sed在处理文本时是逐行读取文件内容,读到匹配的行就根据指令做操作,不匹配就跳过。sed是Linux下一款功能强大的非交互流式文本编辑器,可以对文本文件进行增、
详解Linux文本文件与WIN文本文件换行格式转换命令前言:有时在WIN下编辑好的脚本文件上传到LINUX服务器中不能正常执行,开始误认为是LINUX配置问题,