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

 更新时间:2021年04月06日 15:26:10   作者:一点心青  
这篇文章主要给大家介绍了关于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;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的默认值为:空白(包括:空格,制表符,换行符).

总结

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

相关文章

  • 利用kernel提供的接口打印进程号(pid)

    利用kernel提供的接口打印进程号(pid)

    我们知道linux是模块化的内核。实现模块、利用kernel提供的接口,首先了解写模块的基本框架。下面的c文件就是最基本的框架,当然还有怎样添加一些符号变量,利用的module_param,没用上
    2013-11-11
  • Bash Shell中忽略大小写的设置方法

    Bash Shell中忽略大小写的设置方法

    这篇文章主要介绍了Bash Shell中忽略大小写的设置方法,本文还讲解了其它的一些方便输入命令的设置,如关闭显示隐藏文件、只按一次TAB键、搜索历史命令等技巧,需要的朋友可以参考下
    2015-04-04
  • shell周期差量备份文件夹的实现代码

    shell周期差量备份文件夹的实现代码

    这篇文章主要介绍了shell周期差量备份文件夹的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Linux中Vi和Vim编辑器用法详解

    Linux中Vi和Vim编辑器用法详解

    本文详细讲解了Linux中Vi和Vim编辑器的用法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • linux下ssh安装与scp命令使用详解

    linux下ssh安装与scp命令使用详解

    这篇文章主要介绍了linux下ssh安装与scp命令使用详解的相关资料,需要的朋友可以参考下
    2015-09-09
  • Linux下去掉^M的四种方法

    Linux下去掉^M的四种方法

    本文通过四种方法给大家介绍了Linux下去掉^M的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-06-06
  • Linux 无法使用userdel 删除用户和组的解决方案

    Linux 无法使用userdel 删除用户和组的解决方案

    这篇文章主要介绍了Linux 无法使用userdel 删除用户和组的解决方案的相关资料,需要的朋友可以参考下
    2017-04-04
  • Linux shell中改文件名的方法总结

    Linux shell中改文件名的方法总结

    这篇文章主要给大家介绍了关于Linux shell中改文件名的方法,在Shell中有多种方法可以来修改文件名,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-06-06
  • shell脚本字符串和数组的使用操作方法

    shell脚本字符串和数组的使用操作方法

    这篇文章主要介绍了shell脚本字符串和数组的使用操作方法,在文中给大家提到shell将字符串分隔成数组的方法,需要的朋友可以参考下
    2019-06-06
  • Linux Shell脚本语句执行失败,后续语句继续执行的问题及解决

    Linux Shell脚本语句执行失败,后续语句继续执行的问题及解决

    这篇文章主要介绍了Linux Shell脚本语句执行失败,后续语句继续执行的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06

最新评论