중첩 된 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
문제 및 원하는 출력 :
이것은 FileA의 각 줄에 대해 FileB를 완전히 반복합니다. continue, break, exit를 사용하려고 시도했지만 그중 어느 것도 내가 찾고있는 출력을 달성하기위한 것이 아닙니다. 스크립트가 File A에서 한 줄만 읽은 다음 FileB에서 한 줄만 읽고 루프를 종료하고 File A의 두 번째 줄과 File 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