【Shell脚本】逐行处理文本文件
2024-09-01 07:04:24
经常会对文体文件进行逐行处理,在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的默认值为:空白(包括:空格,制表符,换行符).
最新文章
- python3 黑板客爬虫闯关游戏(一)
- WCF Data Service
- 使用liunx部署的心得
- 永久的CheckBox(单选,全选/反选)!
- Petshop学习第三天
- android中少用静态变量(android静态变量static生命周期)
- [phpmyadmin] phpmyadmin select command denied to user
- NOIP2001 数的划分
- C#操作EXCEL的时候出现“ 无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application” ”问题
- Docker Registry
- 推荐60个jQuery插件(转)
- Windows界面设计标准
- IOC的理解(转载)
- 腾讯广告联盟 Android SDK(广点通)demo的使用方式
- 51nod 1344
- Geekers团队成立日志
- bootstrap 文本对齐风格
- 每日scrum(2)
- 一行代码彻底禁用WordPress缩略图自动裁剪功能
- log4j log for java