gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 24 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章shell下同时读取多个文件的方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

1. 单个文件的读取 。

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

for line in `cat ${input_filename}` 。

do 。

echo $line 。

done 。

while read line 。

do 。

echo $line 。

done < ${input_filename} 。

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

2. 多个文件读取方法 。

那如何实现同时多个文件的读呢?

我们可以继续利用bash中的文件重定向功能,将文件重定向到特定的文件描述符中,语法如下:

n 。

n>file 。

n>>file 。

n<>file 。

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

>file #same as 1>file 。

<>file #same as 0<>file 。

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

exec 7 。

exec 8 。

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

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

read data <&8 。

关闭文件 。

exec 7 。

exec 8 。

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

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 file2 。

readfiles file1 file2 。

最后此篇关于shell下同时读取多个文件的方法的文章就讲到这里了,如果你想了解更多关于shell下同时读取多个文件的方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com