Я хотел бы знать, есть ли какой-либо способ чтения из двух входных файлов во вложенном цикле while по одной строке за раз. Например, допустим, у меня есть два файла FileA
и FileB
.
FiLea:
[jaypal:~/Temp] cat filea
this is File A line1
this is File A line2
this is File A line3
FILEB:
[jaypal:~/Temp] cat fileb
this is File B line1
this is File B line2
this is File B line3
Текущий образец скрипта:
[jaypal:~/Temp] cat read.sh
#!/bin/bash
while read lineA
do echo $lineA
while read lineB
do echo $lineB
done < fileb
done < filea
Исполнение:
[jaypal:~/Temp] ./read.sh
this is File A line1
this is File B line1
this is File B line2
this is File B line3
this is File A line2
this is File B line1
this is File B line2
this is File B line3
this is File A line3
this is File B line1
this is File B line2
this is File B line3
Проблема и желаемый результат:
Это полностью переходит на FileB для каждой строки в FileA. Я попытался использовать продолжение, разрыв, выход, но ни один из них не предназначен для достижения результата, который я ищу. Я хотел бы, чтобы скрипт считывал только одну строку из файла A, а затем одну строку из FileB, выходил из цикла и продолжал со второй строки файла A и второй строки файла B. Что-то похожее на следующий скрипт -
[jaypal:~/Temp] cat read1.sh
#!/bin/bash
count=1
while read lineA
do echo $lineA
lineB=`sed -n "$count"p fileb`
echo $lineB
count=`expr $count + 1`
done < filea
[jaypal:~/Temp] ./read1.sh
this is File A line1
this is File B line1
this is File A line2
this is File B line2
this is File A line3
this is File B line3
Этого можно добиться с помощью цикла while?
paste -d '\n' file1 file2