2 while循环读取文件的内容

时间:2018-02-20 09:40:11

标签: linux bash shell

我有2个档案。让我们说file1和file2。我想和file2一起读取file1,这样它就可以输出一行。

例如。 file1 = contents" 123.45.67.89"     file2 = contents" hostname.cco"

输出:123.45.67.89 hostname.cco

我运行嵌套循环,但似乎我无法想象我想做什么。

1 个答案:

答案 0 :(得分:1)

它实际上非常简单,但确实需要从多个文件描述符中读取。基本上,您正常设置一个读取循环,并将文件重定向到fd3stdin上的第二个文件,然后您可以在循环的每次迭代中从每个文件中读取独立的行。 (例如,从file1读取line1,从file2读取line1,依此类推)。您可以使用:

#!/bin/bash

while read -r -u 3 linea; do               ## reads linea from file1
    read -r lineb;                         ## reads lineb from file2
    printf "%s %s\n" "$linea" "$lineb"     ## outputs combined lines
done 3<"$1" <"$2"  ## notice first file on fd3 and 2nd on stdin

exit 0

示例使用/输出

然后使用file1file2的文件内容,您将获得以下输出:

$ bash read2fd.sh file1 file2
123.45.67.89 hostname.cco

如果这不符合你的意图,请告诉我,我很乐意为你提供进一步的帮助。