shell下同时读取多个文件的方法

1. 单个文件的读取

在shell脚本下,可以多种方式实现按行读取文件,如下:

for line in `cat ${input_filename}`do echo $linedone

while read linedo echo $linedone < ${input_filename}

其中第二种方式是将文件重定向到标准输入中

2. 多个文件读取方法

那如何实现同时多个文件的读呢?
我们可以继续利用bash中的文件重定向功能,将文件重定向到特定的文件描述符中,语法如下:

n<filen>filen>>filen<>file

这里的n代表打开文件file的文件描述符,类似其他编程语言中的fd,如果没有指定n,则其默认行为如下:

<file #same as 0<file>file #same as 1>file<>file #same as 0<>file

我们可以通过exec命令来打开所要重定向的文件:

exec 7<file1exec 8<file2

然后我们可以通过read命令来读取对应文件的内容:

read data <&7 #使用符合是为了区分7是文件描述符,而不是文件名read data <&8

关闭文件

exec 7</dev/nullexec 8</dev/null

多文件读取示例代码如下:

readfiles() { local FD1=7 local FD2=8 local file1=$1 local file2=$2 local count1=0 local count2=0 local eof1=0 local eof2=0 local data1 local data2 # Open files. exec 7<$file1 exec 8<$file2 while [[ $eof1 -eq 0 || $eof2 -eq 0 ]] do if read data1<&$FD1; then let count1++ printf "%s, line %d: %s/n" $file1 $count1 "$data1" else eof1=1 fi if read data2 <&$FD2; then let count2++ printf "%s, line %d: %s/n" $file2 $count2 "$data2" else eof2=1 fi done}#read file1 and file2readfiles file1 file2

(0)

相关推荐

  • 在Windows7下实现全文搜索pdf文件的方法

    PDF文档应该是最常见的一种文件格式了,许多电子书、产品说明、公司文稿都开始使用PDF格式的文档,所以,大家的电脑中也一定保存了海量的 PDF文档。这样一来,如果自己查找某篇仅仅记得大体内容的文章究竟 ...

  • Linux下利用Lsof恢复误删文件的方法

    原理:在Linux系统的/proc 分区下保存着进程的目录和名字,包含fd(文件描述符)和其下的子目录(进程打开文件的链接),那么如果删除了一个文件,还存在一个 inode的引用:/proc/进程号/ ...

  • 如何在win10系统的快速访问功能下显示最近使用的文件

    在win10系统电脑中,如果想要在快速访问分类下显示用户最近使用的文件的话,应如何设置呢?接下来就由小编来告诉大家.具体如下:1. 第一步,打开电脑并在桌面上找到此电脑图标,双击打开.2. 第二步,打 ...

  • Win7系统tmp文件怎么打开 Win7系统打开tmp文件的方法

    现在很多使用Win7系统的用户还不知道tmp文件用什么打开,对于这样的情况其实是因为我们不了解tmp文件是什么,关于tmp文件也就是Windows各种软件使用时产生的临时文件.要是想要打开tmp文件查 ...

  • 图文说明linux查找指定文件的方法

    本文分享linux下查找指定文件名的文件的方法,以查找emp.data文件为例. 操作方法 01 [步骤一]通过文件名查找 1.find 查找范围 -name 要查找的文件的文件名 find /hom ...

  • cad打开dwf格式文件的方法

    遇到dwf文件,然后你在装cad的时候又刚好没装dwf阅读器,直接用cad又打不开,怎么办?本来简单介绍下用cad打开dwf文件的方法. 操作方法 01 如图所示,有一dwf文件. 02 直接用cad ...

  • linux下如何读取使用iso 镜像文件的方法

    如果拷贝到本地,可以使用mount mount fileName mountPoint -o loop,fileName是镜像文件名(*.iso,*.img), 用例:如我有一个/home/rhel5 ...

  • Shell怎么逐行读取文件

    Linux中有很多方法逐行读取一个文件的方法,其中最常用的就是下面的方法,而且是效率最高,使用最多的方法. 为了给大家一个直观的感受,我们将通过生成一个大的文件的方式来检验各种方法的执行效率. 方法1 ...

  • linux系统下分割大文件的方法

    在linux中分割大文件,比如一个5gb日志文件,需要把它分成多个小文件,分割后以利于普通的文本编辑器读取。 有时,需要传输20gb的大文件到另一台服务器,也需要把它分割成多个文件,这样便于传输数据。 ...