Chciałem wiedzieć, czy jest jakiś sposób odczytu z dwóch plików wejściowych w zagnieżdżonej pętli while po jednej linii na raz. Załóżmy na przykład, że mam dwa pliki FileA
i FileB
.
Plik a:
[jaypal:~/Temp] cat filea
this is File A line1
this is File A line2
this is File A line3
Plik B:
[jaypal:~/Temp] cat fileb
this is File B line1
this is File B line2
this is File B line3
Aktualny przykładowy skrypt:
[jaypal:~/Temp] cat read.sh
#!/bin/bash
while read lineA
do echo $lineA
while read lineB
do echo $lineB
done < fileb
done < filea
Wykonanie:
[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
Problem i pożądane wyjście:
Powoduje to całkowite zapętlenie pliku FileB dla każdej linii w FileA. Próbowałem użyć kontynuacji, przerwania, wyjścia, ale żaden z nich nie jest przeznaczony do uzyskania oczekiwanego rezultatu. Chciałbym, aby skrypt odczytał tylko jedną linię z pliku A, a następnie jedną linię z pliku B i opuścił pętlę i kontynuował z drugą linią pliku A i drugą linią pliku B. Coś podobnego do następującego skryptu -
[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
Czy można to osiągnąć za pomocą pętli while?
paste -d '\n' file1 file2