经常会对文体文件进行逐行处理,在Shell里面如何获取每行数据,然后处理该行数据,最后读取下一行数据,循环处理.有多种解决方法如下:

1.通过read命令完成.

read命令接收标准输入,或其他文件描述符的输入,得到输入后,read命令将数据放入一个标准变量中.

利用read读取文件时,每次调用read命令都会读取文件中的"一行"文本.

当文件没有可读的行时,read命令将以非零状态退出.

cat data.dat | while read line
do
echo "File:${line}"
done while read line
do
echo "File:${line}"
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确定.

for line in $(cat data.dat)
do
echo "File:${line}"
done for line in `cat data.dat`
do
echo "File:${line}"
done

  

如果输入文本每行中没有空格,则line在输入文本中按换行符分隔符循环取值.

如果输入文本中包括空格或制表符,则不是换行读取,line在输入文本中按空格分隔符或制表符或换行符特环取值.

可以通过把IFS设置为换行符来达到逐行读取的功能.

IFS的默认值为:空白(包括:空格,制表符,换行符).

最新文章

  1. python3 黑板客爬虫闯关游戏(一)
  2. WCF Data Service
  3. 使用liunx部署的心得
  4. 永久的CheckBox(单选,全选/反选)!
  5. Petshop学习第三天
  6. android中少用静态变量(android静态变量static生命周期)
  7. [phpmyadmin] phpmyadmin select command denied to user
  8. NOIP2001 数的划分
  9. C#操作EXCEL的时候出现“ 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application” ”问题
  10. Docker Registry
  11. 推荐60个jQuery插件(转)
  12. Windows界面设计标准
  13. IOC的理解(转载)
  14. 腾讯广告联盟 Android SDK(广点通)demo的使用方式
  15. 51nod 1344
  16. Geekers团队成立日志
  17. bootstrap 文本对齐风格
  18. 每日scrum(2)
  19. 一行代码彻底禁用WordPress缩略图自动裁剪功能
  20. log4j log for java

热门文章

  1. Cisco 交换Trunk配置
  2. Job流程:决定map个数的因素
  3. SSM到Spring Boot-从零开发校园商铺平台
  4. LVS-net
  5. Linux 下的jdk安装
  6. java 枚举的写法
  7. vector的坑——C++primer练习6.33总结
  8. exit()子程序终止函数与return()函数的差别
  9. Java 基于javaMail的邮件发送(支持附件)
  10. rdlc报表出现多余空白页面