Ich wollte wissen, ob es eine Möglichkeit gibt, aus zwei Eingabedateien in einer verschachtelten while-Schleife jeweils eine Zeile zu lesen. Nehmen wir zum Beispiel an, ich habe zwei Dateien FileA
und FileB
.
Datei A:
[jaypal:~/Temp] cat filea
this is File A line1
this is File A line2
this is File A line3
Datei B:
[jaypal:~/Temp] cat fileb
this is File B line1
this is File B line2
this is File B line3
Aktuelles Beispielskript:
[jaypal:~/Temp] cat read.sh
#!/bin/bash
while read lineA
do echo $lineA
while read lineB
do echo $lineB
done < fileb
done < filea
Ausführung:
[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 und gewünschte Ausgabe:
Dadurch wird FileB für jede Zeile in FileA vollständig durchlaufen. Ich habe versucht, continue, break, exit zu verwenden, aber keines von ihnen ist für das Erreichen der gewünschten Ausgabe gedacht. Ich möchte, dass das Skript nur eine Zeile aus Datei A und dann eine Zeile aus Datei B liest, die Schleife verlässt und mit der zweiten Zeile von Datei A und der zweiten Zeile von Datei B fortfährt.
[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
Ist das mit while-Schleife möglich?
paste -d '\n' file1 file2