मैं जानना चाहता था कि क्या एक समय में एक पंक्ति में लूप रहते हुए दो इनपुट फ़ाइलों से पढ़ने का कोई तरीका है। उदाहरण के लिए, मैं कहता हूं कि मेरे पास दो फाइलें हैं 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 में प्रत्येक पंक्ति के लिए FileB पर लूप करता है। मैंने जारी रखने, तोड़ने, बाहर निकलने का उपयोग करने की कोशिश की, लेकिन उनमें से कोई भी उस आउटपुट को प्राप्त करने के लिए नहीं है जो मैं देख रहा हूं। मैं चाहूंगा कि स्क्रिप्ट फाइल ए से सिर्फ एक लाइन पढ़े और फिर फाइलबी से एक लाइन और लूप से बाहर निकले और फाइल ए की दूसरी लाइन और फाइल बी की दूसरी लाइन जारी रखें। निम्न स्क्रिप्ट के समान कुछ -
[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
क्या लूप के साथ इसे प्राप्त करना संभव है?
paste -d '\n' file1 file2