• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Shell脚本如何逐行处理文本文件

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

    1.通过read命令完成.

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

    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 [选项]  '指令'  操作文件

    常用选项:-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;iNF;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的默认值为:空白(包括:空格,制表符,换行符).

    总结

    到此这篇关于Shell脚本如何逐行处理文本文件的文章就介绍到这了,更多相关Shell处理文本文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Shell文本处理三剑客之sed的使用
    • shell文件处理笔记之插入文本到文件的方法
    • Shell脚本学习指南之文本处理工具
    • 关于使用shell脚本循环处理文本的问题
    上一篇:Shell如何遍历包含空格的文本详解
    下一篇:Shell中数组以及其相关操作的详细实例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Shell脚本如何逐行处理文本文件 Shell,脚本,如何,逐行,处理,