while循环从两个文件中读取数据的问题

sh/bash/dash/ksh/zsh等Shell脚本
回复
keome
帖子: 9
注册时间: 2008-03-29 16:06
送出感谢: 0
接收感谢: 0

while循环从两个文件中读取数据的问题

#1

帖子 keome » 2009-03-30 16:20

while read LINE
do
....
done < $filename

现在的问题是,我有两个文件,想分别从两个文件(分别是filename1和filename2)中读取数据分别存入LINE1和LINE2中,然后在每次循环中进行比较,编码大概是这个样子(运行肯定通过不,只是想表达我的意思)

while read LINE1, LINE2
do
....#进行LINE1和LINE2的比较
done < $filename1, $filename2

请大家帮忙,给些意见,我该怎么做

谢谢
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51
送出感谢: 0
接收感谢: 0

Re: while循环从两个文件中读取数据的问题

#2

帖子 c\nc » 2009-03-30 21:05

如果文件不是特大,有个简单办法:

代码: 全选

a1=(`cat file1`)
a2=(`cat file2`)
然后逐个比较 a1 和 a2 两个数组的数据数据。
keome
帖子: 9
注册时间: 2008-03-29 16:06
送出感谢: 0
接收感谢: 0

Re: while循环从两个文件中读取数据的问题

#3

帖子 keome » 2009-03-30 21:15

c\nc 写了:如果文件不是特大,有个简单办法:

代码: 全选

a1=(`cat file1`)
a2=(`cat file2`)
然后逐个比较 a1 和 a2 两个数组的数据数据。
数据量很大,不知道有没有其他的方法,
难道linux下没有命令支持从两个文件中读取数据?
头像
c\nc
帖子: 231
注册时间: 2007-12-25 12:51
送出感谢: 0
接收感谢: 0

Re: while循环从两个文件中读取数据的问题

#4

帖子 c\nc » 2009-03-30 21:23

文件大,还高要求的话还是别写脚本了,老老实实用 C 打开文件操作吧,再加个日志功能。
aerofox
帖子: 1453
注册时间: 2008-05-24 8:30
送出感谢: 2 次
接收感谢: 31 次

Re: while循环从两个文件中读取数据的问题

#5

帖子 aerofox » 2009-03-31 5:59

文件两个文件中每行都是一个单词,可以这样:

代码: 全选

paste file1 file2 | while read line1 line2; do
如果文件中包含空格或制表符,可以修改 IFS,在 paste 时加上 -d 选项。
头像
cnkilior
论坛版主
帖子: 4981
注册时间: 2007-08-05 17:40
送出感谢: 0
接收感谢: 5 次

Re: while循环从两个文件中读取数据的问题

#6

帖子 cnkilior » 2009-04-05 10:52

diff吧。

把$IFS替换成"\n",然后在diff文件。
头像
wen1987
帖子: 88
注册时间: 2007-07-04 21:54
送出感谢: 0
接收感谢: 0

Re: while循环从两个文件中读取数据的问题

#7

帖子 wen1987 » 2009-04-06 19:28

小事一桩。

代码: 全选

#!/bin/bash
exec 3<file1 4<file2
while read LINE1 <&3 && read LINE2 <&4; do
...
done
Study or die.
回复

回到 “Shell脚本”