本文主要给大家介绍了关于Shell脚本如何逐行处理文本文件的相关资料

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

1.通过read命令完成.

read 命令从标准输入中读取一行,并把输入行的每个字段的值指定给 shell 变量,用 IFS(内部字段分隔符)变量中的字符作为分隔符。VariableName (变量名)参数指定给每一个字段的值,由 VariableName (变量名)参数指定的以此类推,直到最后一个字段。

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

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

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

cat data.dat | while read line
doecho "File:${line}"
donewhile read line
doecho "File:${line}"
done < data.dat

2.使用awk命令完成

awk是一种优良的文本处理工具,提供了极其强大的功能.

语法格式: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命令比较方便.

3.使用for var in file 命令完成

for var in file 表示变量var在file中循环取值.取值的分隔符由$IFS确定.

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

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

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

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

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

Shell脚本逐行处理文本文件技巧相关推荐

  1. shell脚本 逐行读取文本并且 进行字符串的截取

    例如有个文本文件 1234  ji adfa jiji adfasd qqwe // 注意一定要有个回车,这样脚本才会读到最后一行 while read typeline do #get line t ...

  2. linux合并txt文件命令,如何在Linux Shell脚本中合并文本文件中同一...

    我从Nagios使用wget命令下载了html文件,然后使用以下代码将该htmlfile转换为Textfile: html2text -width 180 file.html >a.txt 然后 ...

  3. shell 脚本逐行读取多个文件,并逐行对应

    #!/bin/bash for i in `seq 448` do aaa=`sed -n "$i"p num.txt` bbb=`sed -n "$i"p t ...

  4. [转]写好shell脚本的13个技巧

    for i in {0..255}; doecho -en "\e[48;5;${i}m \e[0m"; done 复制代码 原文 转载于:https://juejin.im/po ...

  5. linux脚本中如何读取文件,如何在Shell脚本中逐行读取文件

    原标题:如何在Shell脚本中逐行读取文件 在这里,我们学习Shell脚本中的3种方法来逐行读取文件. 方法一.使用输入重定向 逐行读取文件的最简单方法是在while循环中使用输入重定向. 为了演示, ...

  6. Linux shell脚本各种烧脑题编写

    第一列达到100的时候 第二列数字从100向1 处理 第二列数字到50 第三列数字从100递增 第二列数字为0时不显示 第四列数字从1递增 ============================== ...

  7. Linux Shell 脚本知识点

    正则表达式在线生成工具: http://tools.jb51.net/regex/create_reg 0. shell 调试 复制代码 代码如下: sh -x somefile.sh 在somefi ...

  8. shell for循环命令行_精心汇总的24道shell脚本面试题

    虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作环境中自动完成很多任务. 如下是一些面试过程中,经常会遇 ...

  9. 面试准备-Shell脚本

    一.Shell脚本是什么? 一个Shell脚本是一个文本文件,包含一个或多个命令.我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务 ...

最新文章

  1. 如何快速提升 Go 程序性能?
  2. 本地Git仓库关联Github项目
  3. ES6、7学习笔记(尚硅谷)-4-模板字符串
  4. 智能汽车路径规划学习-Dijkstra、蚁群算法
  5. UVA - 473 Raucous Rocker 多维dp
  6. 【线性代数】1.3伴随矩阵和逆矩阵
  7. AntDsign菜单高亮
  8. 华为防火墙反病毒(个人思绪总结)
  9. IBM李永辉:智慧运算的软硬之道
  10. web服务器种类汇集
  11. xcode安装ipa包
  12. LInux下好用的markdown编辑器
  13. Android中获取唯一的id
  14. 查看云服务器系统的命令,查看云服务器系统的命令行
  15. vba二维数组初始化_VBA二维数组的基础介绍
  16. 【PAT甲级】 1011 World Cup Betting
  17. Excel快捷键速查
  18. 基于 solidworks2021 的三维仿真模型转 ros URDF
  19. PAT甲级训练合集(1-70)
  20. 【持续更新】常用的工具命令

热门文章

  1. 【分享】博士生提高科研幸福感的途径
  2. 42所双一流大学校长情况简介(2019年)
  3. 胜者为王(比较字符串)
  4. 深度学习模型压缩与加速综述
  5. 2D和3D机器视觉检测技术的优势和局限性
  6. 基于TI TMS320C6678 + Xilinx Kintex-7 的高性能信号处理方案
  7. dotnet new 命令使用模板生成Angular应用
  8. SAX解析XML文档——(二)
  9. 由于市场判断失误 希捷降低收入预期
  10. traceroute/tracert--获取网络路由路径