पेस्ट कमांड: सेटिंग (एकाधिक) सीमांकक


9

लिनक्स में, मुझे निम्न समस्या pasteहै (GNU कोरुटिल्स) 8.13 से:

डिफ़ॉल्ट (TAB) की तुलना में एक और सीमांकक सेट करने का प्रयास या तो केवल परिभाषित सीमांकक के पहले वर्ण को मुद्रित करता है या इसे अनदेखा करता है।

प्रश्न : कैसे उपयोग करते समय एक (कई) सीमांकक परिभाषित करता है paste ?

सीधे शब्दों में, उदाहरण के लिए, एबीसी -123 का परिसीमन अच्छा होगा। "मल्टीपल" से मेरा मतलब एक के बजाय 2 TABS है।


परिसीमन को अंजाम देने वाले पैटर्न जो मैंने अब तक आज़माए हैं

  • --delimiters="\delimiter"
  • --delimiters='\delimiter'
  • --delimiters=$"\delimiter"
  • --delimiters=$'\delimiter'

सभी एक ही परिणाम के साथ: केवल पहले चरित्र को स्वीकार किया जाता है या पूरी तरह से अनदेखा किया जाता है। मैंने लघु संस्करण -d"\"और कई उदाहरण और ndahs भी आज़माए हैं; कुछ भी तो नहीं।

इसके अलावा:

  • --delimiters="\\" → त्रुटि संदेश

क्या पूरी तरह से काम करता है, हालांकि मैं क्या चाहता हूँ:

  • --delimiters="\n" → न्यूलाइन
  • --delimiters="\0" → कुछ भी नहीं
  • --delimiters="\t"TAB, डिफ़ॉल्ट। महान।

जवाबों:


17

करवाने के लिए abcinbetween file1 और करें 2, आप कर सकते हैं:

paste -d abc file1 /dev/null /dev/null file2

या:

paste -d abc file1 - - file2 < /dev/null

यदि आप दो टैब चाहते हैं:

paste file1 /dev/null file2

" टेक्स्ट प्रोसेसिंग में दो कॉलम बनाने के लिए उपयोग /dev/nullकरना " काम करता है (इसके अलावा: क्या यह सामान्य ज्ञान है जो मैंने अब तक याद किया है और यदि नहीं: आपको यह जानकारी कहां से मिली?)
erch

1
@ Chirp.NotLuke। /dev/nullपढ़ते समय एक खाली फ़ाइल की तरह कार्य करता है, इसलिए आप पेस्ट कर रहे हैं file1और खाली फ़ाइल, और खाली फ़ाइल, फ़ाइल 2 के साथ विभाजक, बदले में a, bऔर c। मैन पेज -dमें कार्य कैसे हैं, इस पर विवरण paste
स्टीफन चेजेलस

@ स्टीफनचैलेज आप pr -mts'abc' file1 file2वैकल्पिक के रूप में भी जोड़ सकते हैं ?
सुन्दीप

4

ऐसा इसलिए है क्योंकि आप इसे केवल दो फ़ाइलों को शामिल करने के लिए दे रहे हैं, सीमांकक स्ट्रिंग के प्रत्येक वर्ण का उपयोग इनपुट फ़ाइलों में से प्रत्येक से लाइनों के प्रत्येक जुड़ने के बीच किया जाता है।

जैसे

file1 line1 DELIMCHAR0 file2 line1 DELIMECHAR1 file3 line1 ...
file1 line2 DELIMCHAR0 file2 line2 DELIMECHAR1 file3 line2 ...
...

2

बीएसडी सिस्टम (मेरी जानकारी के लिए लिनक्स नहीं) पर, वहाँ lam("टुकड़े टुकड़े") उपयोगिता के रूप में है, जो उपरोक्त समाधान की तुलना में तेज और कम है:

lam file1 -s delimiter file2
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.