2009-11-12 9 views
17

शायद मामूली प्रश्न के लिए खेद है।यूनिक्स विभाजक चार

मैंने यूनिक्स कमांड में शामिल होने के साथ थोड़ा सा लड़ा, डिफ़ॉल्ट विभाजक के रूप में सफेद जगहों के बजाय टैब प्राप्त करने का प्रयास किया। आयकर तर्क है, लेकिन ये काम नहीं करते

join file1 file2 -t"\t" 
join file1 file2 -t="\t" 
join file1 file2 -t="\\t" 
join file1 file2 -t $"\t" 

एट इत्यादि (ubuntu 9.10 64 बिट 2.6.31-14, जीएनयू संस्करण 7.4 coreutils)। बेशक, मैं हमेशा

join file1 file2 > output 
sed "s/ /\t/g" output 

जैसे कुछ असजीला समाधान का उपयोग कर सकते लेकिन मैं स्मार्ट :-) इसके अलावा देखने के लिए, वहाँ एक आयकर तर्क है, तो यह काम करना चाहिए चाहता था।

+0

जब उपयोग आयकर, आदमी पेज में कहा गया है , यह कहता है "इनपुट CHAR का उपयोग इनपुट और आउटपुट फ़ील्ड विभाजक के रूप में करें।" जब आपकी दोनों फाइलों में एक ही टर्मिनेटर होता है, तो यह काम करता है। – ghostdog74

उत्तर

36

पढ़ता था मैं इसे एक चर उत्पन्न ऑन-द-मक्खी

लेता प्रयास करें लगता है

join file1 file12 -t $'\t' 
+0

प्रतिभा। यह काम करता हैं! –

+0

कूल। मुझे '$' ... '' पहले वाक्यविन्यास नहीं पता था। – Boldewyn

+1

$ '\ t' केवल बैश में काम करता है और POSIX खोल (sh) – citrin

2

आदमी कहते हैं, कि विकल्प फ़ाइल नामों के सामने आना है। क्या आपने

join -t "\t" file1 file2 

को आजमाया है?

संपादित करें: Tonio के जवाब को दर्शाते हुए, सही लाइन

join -t $'\t' file1 file2 
+0

हाँ, काम नहीं करता है। यह त्रुटि देता है: शामिल हों: बहु-वर्ण टैब '\\ t ' –

+0

उद्धरण निकालें? कम से कम त्रुटि संदेश मेरे टर्मिनल पर गायब हो जाता है। – Boldewyn

+0

मैं सहमत हूं, त्रुटि गायब हो जाती है, लेकिन आउटपुट इस तरह गलत है: -/ –

2
join -t "`echo '\t'`" file1 file2 

ps: मेरी मशीन पर, Red Hat Enterprise Linux सर्वर रिलीज 5.1 (टिकंगा), आदेश join -t $'\t' file1 file2 "अवैध चर नाम" देता है।

+0

एक डिस्ट्रो-विशिष्ट समाधान –

+0

जोड़ने के लिए धन्यवाद कि यह फेडोरा 23 पर काम नहीं करता है, यह कुछ भी नहीं निकालता है। – sebelk

4

आप दबाने Ctrl + V टैब

join -t '<CTRL+v><Tab>' file1 file2 
2

एक वैकल्पिक चाल काम करने के लिए शाब्दिक टैब वर्ण के साथ उद्धरण में आयकर विकल्प संलग्न करने के लिए है लगता है कि द्वारा टैब डाल सकते हैं।

join '-t ' ... 
टी और समापन बोली के बीच एक चर अंतरिक्ष के साथ

(क्योंकि यह एक टैब होता है): इस तरह दिखता है।

टाइप किया, यह है:

join<Spc>'-t<Ctrl-v><Tab>' ... 
+0

परीक्षण 23 और फेडोरा 23 पर ठीक काम करता है – sebelk

0

अन्य तरीका है:

join -t "`echo -e "\t"`" file1 file2`

या एक अधिक बैश-फैशन में:

join -t "$(echo -e "\t")" file1 file