2011-05-26 10 views
11

क्या बैश में समान पायथन ज़िप() functionailty है? विशिष्ट होना करने के लिए, मैं अजगर का उपयोग किए बिना बराबर कार्यक्षमता के लिए देख रहा हूँ बैश में:पायथन में पाइथन ज़िप() व्यवहार?

$ echo "A" > test_a 
$ echo "B" >> test_a 
$ echo "1" > test_b 
$ echo "2" >> test_b 
$ python -c "print '\n'.join([' '.join([a.strip(),b.strip()]) for a,b in zip(open('test_a'),open('test_b'))])" 
A 1 
B 2 
+0

: तुम क्यों इस मामले में अजगर से परहेज कर रहे हैं? – dusktreader

+1

इसे पीबीएस स्क्रिप्ट में एम्बेड करना। इसे जितना संभव हो सके उतना सरल रखना चाहते हैं, लेकिन जरूरी नहीं कि पाइथन – daniel

उत्तर

14

शुद्ध बैश:

[email protected]:~$ zip34() { while read word3 <&3; do read word4 <&4 ; echo $word3 $word4 ; done } 
[email protected]:~$ zip34 3<a 4<b 
alpha one 
beta two 
gamma three 
delta four 
epsilon five 
[email protected]:~$ 

(वर्ष जवाब) join को देखो।

liori:~% cat a 
alpha 
beta 
gamma 
delta 
epsilon 
liori:~% cat b 
one 
two 
three 
four 
five 
liori:~% join =(cat -n a) =(cat -n b) 
1 alpha one 
2 beta two 
3 gamma three 
4 delta four 
5 epsilon five 

(यह मानते हुए कि आप =() operator like in zsh मिल गया है, अन्यथा यह और अधिक जटिल है)।

+0

का विरोध किया जाए। मैंने पहले शामिल होने पर देखा लेकिन मैं इस धारणा के तहत था कि आपको एसक्यूएल जैसे सामान्य पहचानकर्ताओं की आवश्यकता है – daniel

+0

इस मामले में फ़ंक्शन थोड़ा अधिक लचीलापन जोड़ता है। लाइनों को "ज़िप" करने के अलावा, मुझे उनके बीच कुछ पाठ जोड़ने की भी आवश्यकता है। धन्यवाद! – daniel

+0

क्या आपके पास एक लिंक है जो = =() 'करता है? इसके लिए Google करना असंभव है :) – Marian

4

कोड

[tmp]$ echo "A" > test_a 
[tmp]$ echo "B" >> test_a 
[tmp]$ echo "1" > test_b 
[tmp]$ echo "2" >> test_b 
[tmp]$ cat test_a 
A 
B 
[tmp]$ cat test_b 
1 
2 
[tmp]$ paste test_a test_b > test_c 
[tmp]$ cat test_c 
A 1 
B 2 
0

आप join के बाद cat -n के साथ दो चरणों में कर सकता है। (cat -n प्रत्येक पंक्ति के शुरू में लाइन नंबर के साथ अपनी फ़ाइल reproduces join लाइन नंबर पर दो फ़ाइलों मिलती है।।)

$ echo "A" > test_a 
$ echo "B" >> test_a 
$ echo "X" > test_b 
$ echo "Y" >> test_b 
$ cat -n test_a > test_a.numbered 
$ cat -n test_b > test_b.numbered 
$ join -o 1.2 -o 2.2 test_a.numbered test_b.numbered 
A X 
B Y 
बस जिज्ञासा से बाहर
+0

आह .... यह है कि इसमें शामिल होने के साथ कैसे करें :) – daniel

संबंधित मुद्दे