Shell脚本循环逐行读取文件

Shell脚本循环读取文件常用的方案有输入重定向和管道操作,循环形式有while和for两种,具体的使用或搭配看个人习惯,个人尚未对命令进行性能验证

所属分类 Linux

相关标签 Shell循环管道

常见写法

该方案使用了输入重定向 + while ... do ... done 逐行读取。

# $file文件
file="./xxx.log"
# 循环读行
while read line
do
# 这里单纯执行一个输出
echo $line 
# 业务代码块范围
done  < $file

管道操作

该方案使用了 cat 全文读取 + 管道 + while ... do ... done 逐行读取。

# $file文件
file="./xxx.log"
#  管道 + 循环读行
cat $file | while read line
do
echo $line
done

cat 全文读取,先读后循环,如果文件比较大不建议使用 cat。

大文件不建议用 cat,但是可以将 cat $file 替换成其他命令。

比如:tail -200 $file 只读取最后200行。

类似这样:

# $file文件
file="./xxx.log"
#  只读取最后200行 + 管道 + 循环读行
tail -200 $file | while read line
do
echo $line
done

for循环语法

其实 for 循环和管道方案类似。

管道是将命令放在 | 之前,for 循环是将命令用`xxx`包裹起来。

PS:`XXX` `符号表示执行命令,返回的是执行结果。

比如: info=`ls` $info就得到了目录下的内容。

# $file文件
file="./xxx.log"
# 读取全文后循环
for line in `cat $file`
do
echo $line
done

与管道类似,`cat $file`也可以替换为其他内容实现条件读取。

比如:`grep -e fail $file`只读取包含fail字符串的行。

小结

重定向适合全文读取大文件。

如果需要全文读取,尽量不要用 cat。

在实际应用中,条件读取的场景比较多,具体是用管道还是用 for 就看个人习惯了。

米虫

做一个有理想的米虫,伪全栈程序猿,乐观主义者,坚信一切都是最好的安排!

本站由个人原创、收集或整理,如涉及侵权请联系删除

本站内容支持转发,希望贵方携带转载信息和原文链接

本站具有时效性,不提供有效、可用和准确等相关保证

本站不提供免费技术支持,暂不推荐您使用案例商业化

发表观点

提示

昵称

邮箱

QQ

网址

当前还没有观点发布,欢迎您留下足迹!

同类其他

Linux

关键:Linux系统磁盘挂载

Linux系统一般情况下启动默认只加载系统盘,支持其他磁盘自由热插拔,如果发现自己的某些目录找不见了的时候不要慌看看是不是没有设置开机启动自动加载挂载磁盘内容,另外要特别注意首次安装系统记得磁盘挂载操作

Crontab配置定时任务处理日常工作

Linux服务器测试环境或正式生产环境常常设计一些定时例行处理的操作,如日记备份转移清理等,利用Crontab+Shell脚本组合实现定期定时操作,确保不会应工作繁忙忘记任务导致环境异常

awk强大的文本&文件的处理语言

awk,一种处理文本文件的语言,强大的文本分析工具。取三位创始人Alfred Aho、Peter Weinberger和Brian Kernighan的Family Name的首字符

多环境间信任关系添加的完整与快捷流程

项目上的开发和测试环境非常多,少则数十多则上百,实际工作中实在懒得来回登录或打开各个环境,最好的方案就是给内网环境间添加一下信任关系,便于快速在环境之间切换,免去输入密码的烦恼

交互式脚本expect脚本实现自动化

expect脚本由一系列expect-send对组成,等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应,特别适用于需要批量手动输入命令的自动化操作改造

Comm语法简单实用的文本文件对比工具

Linux系统的Comm命令可以方便快捷的对比文本文件并输出差异结果,使用该命令需要一个前提最好先对文件进行排序,否则输出的差异结果一言难尽,因此会比较适合数据库导出数据的对比

选择个人头像

昵称

邮箱

QQ

网址

评论提示

  • 头像:系统为您提供了12个头像自由选择,初次打开随机为你选择一个
  • 邮箱:可选提交邮箱,该信息不会外泄,或将上线管理员回复邮件通知
  • 网址:可选提交网址,评论区该地址将以外链的形式展示在您的昵称上
  • 记忆:浏览器将记忆您已选择或填写过得信息,下次评论无需重复输入
  • 审核:提供一个和谐友善的评论环境,本站所有评论需要经过人工审核