逐行读取两个文件并同时处理它们

时间:2017-03-09 11:40:32

标签: bash

大家好,我对这个游戏很陌生,所以我的问题可能很简单,但我已经坚持了很长时间。我想逐行处理两个文件列表中的两个文件。

我现在正在尝试:

 read file1 && read file2; 
    do 
    echo "$file1 and $file2"
    done 

回声当然只是脚本其余部分的空间持有者,但我没有设法从读取操作中获取任何变量。

2 个答案:

答案 0 :(得分:1)

您需要两个单独的文件描述符一次从两个文件中读取。其中一个可以是标准输入。

while IFS= read -r line1 && IFS= read -r line2 <&3; do
  echo "File 1: $line1"
  echo "File 2: $line2"
done < file1 3< file2

答案 1 :(得分:-1)

LINECOUNTER=1
while true; do
    FILE1INPUT="$(sed -n "${LINECOUNTER}p" file1.txt)"
    FILE2INPUT="$(sed -n "${LINECOUNTER}p" file2.txt)"
    echo "$FILE1INPUT and $FILE1INPUT"
    let LINECOUNTER=LINECOUNTER+1
done
  • LINECOUNTER变量只是为了记住下一行输出的行。
  • 然后将sed命令$(sed ...)的输出分配给 变量FILE1INPUT。这个sed命令只读取一行,指定 来自file1.txt的LINECOUNTER。与file2.txt相同
  • 然后LINECOUNTER加1,以便下次sed 执行下一行返回。

当然,需要一个适当的条件让while循环结束。