如何在Shell脚本中逐行读取文件

摘要:
在这里,我们将学习shell脚本中的三种方法来逐行读取文件/bin/bashlreadrowsdoecho“Linecontentsare:$rows”done<$1运行结果:如何工作:-启动while循环并将每行的内容保存在变量“rows”中-使用echo显示输出内容,$rows变量是文本文件中每行的内容-Use input redirection˂从命令行参数$1读取文件内容方法4.使用awk命令使用awk,只需要一个命令行逐行读取文件内容。创建一个名为“example4.sh”的脚本文件,如下所示:[root@localhost~]#catexample4.sh#!
在这里,我们学习Shell脚本中的3种方法来逐行读取文件。
方法一、使用输入重定向

逐行读取文件的最简单方法是在while循环中使用输入重定向。

为了演示,在此创建一个名为“ mycontent.txt”的文本文件,文件内容在下面:

[root@localhost ~]# cat mycontent.txt 
This is a sample file
We are going through contents
line by line
to understand

如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件
创建一个名为“ example1.sh”的脚本,该脚本使用输入重定向和循环:

[root@localhost ~]# cat example1.sh 
#!/bin/bash
while read rows
do
  echo "Line contents are : $rows "
done < mycontent.txt

运行结果:
如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件
如何工作的:

  • - 开始while循环,并在变量“rows”中保存每一行的内容
  • - 使用echo显示输出内容,$rows变量为文本文件中的每行内容
  • - 使用echo显示输出内容,输出内容包括自定义的字符串和变量,$rows变量为文本文件中的每行内容

Tips:可以将上面的脚本缩减为一行命令,如下:

[root@localhost ~]# while read rows; do echo "Line contents are : $rows"; done < mycontent.txt

如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件

方法二、使用cat命令和管道符

第二种方法是使用cat命令和管道符|,然后使用管道符将其输出作为输入传送到while循环。

创建脚本文件“ example2.sh”,其内容为:

[root@localhost ~]# cat example2.sh 
#!/bin/bash
cat mycontent.txt | while read rows
do
  echo "Line contents are : $rows "
done

运行结果:
如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件
如何工作的:

  • - 使用管道将cat命令的输出作为输入发送到while循环。
  • |管道符将cat输出的内容保存在"$rows"变量中。
  • - 使用echo显示输出内容,输出内容包括自定义的字符串和变量,$rows变量为文本文件中的每行内容

Tips:可以将上面的脚本缩减为一行命令,如下:

[root@localhost ~]# cat mycontent.txt |while read rows;do echo "Line contents are : $rows";done

如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件

方法三、使用传入的文件名作为参数

第三种方法将通过添加$1参数,执行脚本时,在脚本后面追加文本文件名称。

创建一个名为“ example3.sh”的脚本文件,如下所示:

[root@localhost ~]# cat example3.sh 
#!/bin/bash
while read rows
do
  echo "Line contents are : $rows "
done < $1

运行结果:
如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件
如何工作的:

  • - 开始while循环,并在变量“rows”中保存每一行的内容
  • - 使用echo显示输出内容,$rows变量为文本文件中的每行内容
  • - 使用输入重定向<从命令行参数$1读取文件内容
方法四、使用awk命令

通过使用awk命令,只需要一行命令就可以逐行读取文件内容。

创建一个名为“ example4.sh”的脚本文件,如下所示:

[root@localhost ~]# cat example4.sh 
#!/bin/bash

cat mycontent.txt |awk '{print "Line contents are: "$0}'

运行结果:
如何在Shell脚本中逐行读取文件如何在Shell脚本中逐行读取文件

总结

本文介绍了如何使用shell脚本逐行读取文件内容,通过单独读取行,可以帮助搜索文件中的字符串。

免责声明:文章转载自《如何在Shell脚本中逐行读取文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Oracle Parallel 多线程burp插件开发--基础篇下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【js重学系列】作用域

作用域 在 JavaScript 中, 作用域为可访问变量,对象,函数的集合。 在 Javascript 中,作用域分为 全局作用域 和 函数作用域 什么是作用域呢,简单的说,作用域就是变量与函数的可访问范围,即作用域控制着变量与函数的可见性和生命周期。 全局变量 变量在函数外定义,即为全局变量。 全局变量有 全局作用域: 网页中所有脚本和函数均可使...

MUD教程--巫师入门教程3

1. 指令格式为:edit <档名>,只加文件名,默认为当前目录,加here,表示编辑你当前所处的房间, 回车后即进入线上编辑系统。2. 如果这是一个已经有的档案,你可以使用 z 或 Z 来看档案。z表示一次显示20行,Z表示一次显示40行。为了编辑方便,最好在开始时用 n 表示每一行在开头处显示它的行数,再用一次 n 取消行数显示;3. 还有...

JAVA闭包

一、闭包的定义。   有很多不同的人都对闭包过进行了定义,这里收集了一些。   # 是引用了自由变量的函数。这个函数通常被定义在另一个外部函数中,并且引用了外部函数中的变量。 -- <<wikipedia>>   # 是一个可调用的对象,它记录了一些信息,这些信息来自于创建它的作用域。-- <<Java编程思想>&...

Linux shell获取时间和时间间隔(ms级别)

说明:在进行一些性能测试的时候,有时候我们希望能计算一个程序运行的时间,有时候可能会自己写一个shell脚本方便进行一些性能测试的控制(比如希望能运行N次取平均值等),总之,这其中有一个需求可能就是获取一个时间戳或时间差。 1. Linux shell获取时间的相关命令 time命令:获取一个程序的执行时间,可以获取到实际运行时间以及程序在用户态和内核态...

SHELL脚本编程配置环境

SHELL脚本编程配置环境 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任。 一.bash如何展开命令行 1>.bash的优先级 把命令行分成单个命令词   展开别名 展开大括号的声明({}) 展开波浪符声明(~) 命令替换$() 和 ``) 再次把命令行分成命令词 展开文件通配(*、?、[abc]等等) 准备I/0重导...

PL/pgSQL学习笔记之四

http://www.postgresql.org/docs/9.1/static/plpgsql-structure.html 39.2. PL/pgSQL 的结构 PL/pgSQL是一种块式结构的语言。完整的函数定义必须是一个块。一个块的定义形式如下: [<<label>> ] [DECLARE declaratio...