Original shellscript
I thought the following shellscript would do it. The trick is to open the two files on separate file descriptors (here #4 and #5).
#!/bin/bash
while read -r -u 4 line1 && read -r -u 4 line2 && read -r -u 5 line3
do
echo "$line1"
echo "$line2"
echo "$line3"
done 4<file1.txt 5<file2.txt
Test
Make the shellscript executable and run it,
$ ./myscript
A a aa
B b bb
E e ee
C c cc
D d dd
F f ff
The original shellscript stops, when reading to the end of file in one of the input files (so that only matching 2+1 lines are written to the output).
Modified shellscript
The following shellscript will continue reading and writing until all the files have reached end of file (so that all available lines are written to the output). This should match what the OP wants.
#!/bin/bash
end1=false
end2=false
cont=true
while $cont
do
read -r -u 4 line1
if [ $? -eq 0 ]
then
echo "$line1"
else
end1=true
fi
read -r -u 4 line2
if [ $? -eq 0 ]
then
echo "$line2"
else
end1=true
fi
read -r -u 5 line3
if [ $? -eq 0 ]
then
echo "$line3"
else
end2=true
fi
if $end1 && $end2 # modify this line to change when to stop
then
cont=false
fi
done 4<file1.txt 5<file2.txt