参考: http://www.cnblogs.com/dwdxdy/archive/2012/07/25/2608816.html
经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下:
1.通过read命令完成.
read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.
利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本.
当文件没有可读的行时,read命令将以非零状态退出.
1 cat data.dat | while read line 2 do 3 echo "File:${line}" 4 done 5 6 while read line 7 do 8 echo "File:${line}" 9 done < data.dat
2.使用awk命令完成
awk是一种优良的文本处理工具,提供了极其强大的功能.
利用awk读取文件中的每行数据,并且可以对每行数据做一些处理,还可以单独处理每行数据里的每列数据.
1 cat data.dat | awk '{print $0}' 2 cat data.dat | awk 'for(i=2;i<NF;i++) {printf $i} printf "\n"}'
第1行代码输出data.dat里的每行数据,第2代码输出每行中从第2列之后的数据.
如果是单纯的数据或文本文件的按行读取和显示的话,使用awk命令比较方便.
3.使用for var in file 命令完成
for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.
1 for line in $(cat data.dat) 2 do 3 echo "File:${line}" 4 done 5 6 for line in `cat data.dat` 7 do 8 echo "File:${line}" 9 done
如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.
如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.
可以通过把IFS设置为换行符来达到逐行读取的功能.
demo:
假设现需要读取如下的文件rollback_config.txt:
ROLLBACK_SERVICES:upserv checkserv
ROLLBACK_VERSION:v1.1
使用 for line in `cat rollback_config.txt`; do echo "${line}"; done 读取的结果会是:
ROLLBACK_SERVICES:upserv
checkserv
ROLLBACK_VERSION:v1.1
显然不是我们想要的。
解决方法:
IFS_old=$IFS
IFS=$'\n'
for line in `cat rollback_config`;do
echo "$line"
done;
IFS=$IFS_old
这样一来就可以了!
IFS的默认值为:空白(包括:空格,制表符,换行符).
相关推荐
主要介绍了Shell脚本逐行读取文本文件,本文着重探讨不改变文本格式的方法读取出文件内容,需要的朋友可以参考下
如何在Shell脚本中逐行读取文件.doc
您可能感兴趣的文章:PowerShell读取文本文件指定行内容的方法PowerShell比较文本文件的两个方法Shell脚本逐行读取文本文件(不改变文本格式)Powershell实现加密解密文本文件方法实例shell文件处理笔记之插入文
shell脚本替换文件中的tab为空格,删除空白行(空白行:有空格而没有字符)
今天小编就为大家分享一篇关于Shell脚本从文件中逐行读取内容的几种方法实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
使用此简单且简短的Shell脚本逐行发送整个电影脚本。 发送电影Shell脚本! 使用此简单且简短的Shell脚本逐行发送整个电影脚本。 由于以下视频https://www.tiktok.com/@jayspanks/video/6859876171530751237?lang=en...
Linux脚本学习100例,包含以下10个文件: Shell 脚本 100 例《一》 Shell 脚本 100 例《二》 Shell 脚本 100 例《三》 Shell 脚本 100 例《四》 Shell 脚本 100 例《五》 Shell 脚本 100 例《六》 Shell 脚本 100 例...
两个文本文件逐行比较,找出比较文件中独有的文本行,并将它加入原文本文件中。
shell脚本生成.txt数据文件,shell脚本生成.txt数据文件
有关几个shell脚本的编写,如:编写一个shell脚本程序,它带一个命令行参数,这个参数是一个文件。如果这个文件是一个普通文件,则打印文件所有者的名字和最后的修改日期...加入了自己的注释理解
资源名称:Linux Shell脚本学习基础视频资源目录:【】11a00d99b60c4e2eba3440b8aa3a6bdd【】linux_shell脚本编程_01认识shell,如何编写shell脚本和执行【】linux_shell脚本编程_02vivim简单的常用操作【】linux_...
经常碰到文本文件更新变化,需要比对差异(比对出哪此文件有变化和变化内容),类似UltraEdit等工具可以胜任,不过如果需要比对的文件太多时,好像没有什么合适的工具,为此自己写了一个shell脚本,可以在linux/unix...
linux shell脚本获取时间判断时间差,进行计算,自动化
比如,你可以使用shell脚本的PID在/tmp下创建一个唯一的临时文件。有时侯脚本需要检测所有运行的进程,它可以从进程列表中排除自身的子shell。 在bash中,子shell进程的PID存储在一个特殊的变量‘$$’中。这个变量...
主要介绍了本地文件与服务器文件同步shell脚本的方法,然后在文章给大家补充介绍了shell脚本备份本地服务器的文件到远程服务器的实例代码,需要的朋友可以参考下
主要介绍了Shell脚本实现从文件夹中递归复制文件,本文脚本实现从十层左右的文件夹中复制所有文件到一目录中,需要的朋友可以参考下
Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合。 Shell可以直接使用在win/Unix/Linux上面,并且可以调用大量系统内部的功能来...
使用一般的mysql命令或者是sql脚本都可以插入数据到mysql数据表中,我这里介绍如何是Shell批量的从CSV文件中添加数据到mysql数据库中,方便数据迁徙,测试数据的添加之类的工作。
主要介绍了shell脚本实现linux系统文件完整性检测,本文给出的脚本使用对比MD5的方法,检测linux系统文件是否被替换等问题,需要的朋友可以参考下