如何在 bash 中从一个文件或另一个文件读取?



我有两个文件,我正在尝试逐行读取,但我只想继续从任何给定循环迭代中的文件或另一个文件读取。(我也不确定如何检查 EOF(。这是我的伪代码:

#initialize variables
line1=read <file1.txt
line2=read <file2.txt
#compare lists
while true
do
#check if there is a match
if [[ "$line1" == "$line2" ]]
then
echo match
break
elif [ "$line1" -lt "$line2" ]
then
line1=read <file1.txt    # <-SHOULD READ NEXT LINE OF F1
else
line2=read <file2.txt    # <-SHOULD READ NEXT LINE OF F2
fi
#Check for EOF
if [[ "$line1" == EOF || "$line2" == EOF ]] 
then
break
fi
done

显然,就目前而言,这将继续读取F1和F2的第一行。 任何帮助将不胜感激!

您需要打开每个文件一次,以便在每次读取之前不会重置文件指针。 每当read尝试读取文件的最后一行时,它都会具有非零退出状态,因此您可以检查它以终止循环。

{
read line1 <&3
read line2 <&4
while true; do
#check if there is a match
if [[ "$line1" == "$line2" ]]; then
echo match
break
elif [ "$line1" -lt "$line2" ]; then
read line1 <&3 || break
else
read line2 <&4 || break
fi
done
} 3< file1.txt 4< file2.txt

相关内容

  • 没有找到相关文章

最新更新