从文件中读取一行后移动文件指针

时间:2012-05-14 11:48:03

标签: file bash unix loops

while read line;do
read header_line < headers.txt
task 1
task 2
done < temp1.txt

我想同时从文件headers.txt和temp1.txt中读取行。所以,例如,如果我从temp1.txt读取一行,我还应该读取来自headers.txt的一行。这段代码的问题在于它逐个读取temp1.txt中的行,但它始终从headers.txt中读取相同的行。一旦读取header_line,我希望文件指针移动到下一行。我该怎么做呢?

2 个答案:

答案 0 :(得分:3)

使用额外的文件描述符,并在do

之前进行第二次阅读
#!/bin/bash

# open extra file descriptors for input
exec 3< headers.txt

while read -r line; read -r -u 3 header_line
do
    echo "[$header_line] [$line]"
done < temp1.txt

# close the extra file descriptor
exec 3<&-

答案 1 :(得分:1)

可能你可以替换这一行

read header_line < headers.txt 

with:

 sed -n '${count}p' hearders.txt

其中count在while循环的每次迭代中递增,应该初始化为1.