入れ子になったwhileループ内の2つの入力ファイルから1行ずつ読み取る方法があるかどうかを知りたかった。たとえば、2つのファイル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
問題と望ましい出力:
これは、FileAの各行に対してFileBを完全にループします。continue、break、exitを使用してみましたが、探している出力を達成するためのものではありません。スクリプトは、ファイルAから1行、次にファイルBから1行だけを読み取ってループを終了し、ファイルAの2行目とファイルBの2行目から続行したいと思います。次のスクリプトに似たもの-
[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