दो कॉलम में लंबे आउटपुट को विभाजित करें


20

क्या मेरी एक स्क्रिप्ट से आउटपुट को स्तंभित करने के लिए एक साधारण उपयोगिता या स्क्रिप्ट है? मेरे पास किसी रूप में डेटा है:

A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn
F kjhnakjshddnaskjdh

लेकिन अगर यह दो लंबा हो जाता है, तो निम्नलिखित रूप में डेटा लिखें (जहां अभी भी लंबवत आदेश दिया गया है):

A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

मैनपेज पढ़ने से, मुझे नहीं लगता कि यह कुछ columnऐसा है जो उचित होगा लेकिन मुझे यकीन नहीं है। फॉर्म में विभाजित करना आसान है:

A B 
C D 
E F

केवल \nहर दूसरी पंक्ति को प्रिंट करके (मेरी वर्तमान स्क्रिप्ट क्या करती है)। कोई विचार? धन्यवाद!

जवाबों:


16

क्या आपने वास्तव में कोशिश की column ? यह वही प्रतीत होता है जो आप चाहते हैं:

$ cat file
A aldkhasdfljhaf
B klajsdfhalsdfh
C salkjsdjkladdag
D lseuiorlhisnflkc
E sdjklfhnslkdfhn

$ column file
A aldkhasdfljhaf    D lseuiorlhisnflkc
B klajsdfhalsdfh    E sdjklfhnslkdfhn
C salkjsdjkladdag   F kjhnakjshddnaskjdh

मैंने कोशिश की। लेकिन गलत तरीके से (-t)... But for yours to work reliably you probably need
हॉक लैगिंग

मैंने कोशिश की लेकिन किसी कारण से मुझे एहसास नहीं हुआ कि यह आपकी टर्मिनल विंडो की चौड़ाई पर निर्भर करता है (अब स्पष्ट लगता है)!
हेमर

मैं भी एक ही बार में दो मशीनों पर यह परीक्षण कर रहा था। जाहिरा तौर पर पुराने संस्करण (वैज्ञानिक लिनक्स पर लगभग 1993) नए 2004 संस्करण के लिए अलग तरह से व्यवहार करता है ...
हेमर

11

आउटपुट को स्तंभित करने के prलिए, मुद्रण के लिए पाठ फ़ाइलों को रूपांतरित करता है:

-COLUMN, --columns=COLUMN: output COLUMN columns
      and print columns down, unless -a is used.

-t, --omit-header : omit page headers and trailers

जैसे

ls /etc | pr -2 -t
abrt                                gtk-2.0
acpi                                hal
adjtime                             hba.conf
agent.properties                    host.conf
aliases                             hosts
aliases.db                          hosts.allow
...

बड़ी (लंबी) फ़ाइल के लिए ठीक से काम नहीं करना।
एक बार

2

आप फ़ाइल को दो में विभाजित कर सकते हैं (समान संख्या में रेखाएँ या पहली फ़ाइल जिसमें एक पंक्ति अधिक हो) और फिर ऐसा करें:

paste file1 file2

यदि लाइनों की लंबाई बहुत अलग है, तो रिक्त स्थान के साथ पैडिंग द्वारा लंबाई बढ़ाने के लिए प्रिंट का उपयोग करना आवश्यक हो सकता है।


या ... | paste - - जब "लंबे समय तक बंटवारे का उत्पादन" ...
don_crissti

1

आप सीधे सादे उपयोग कर सकते हैं columns:

$ cat test.txt | columns
A aldkhasdfljhaf             B klajsdfhalsdfh             C salkjsdjkladdag
D lseuiorlhisnflkc           E sdjklfhnslkdfhn            F kjhnakjshddnaskjdh

नोट:columns आदेश का हिस्सा है autogenमेरी फेडोरा 14 सिस्टम पर पैकेज।

$ rpm -qf /usr/bin/columns
autogen-5.9.4-7.fc12.x86_64

संदर्भ



@ गिल्स - हां इसका हिस्सा है autogen। बस मेरे फेडोरा 14 सिस्टम पर जाँच की गई। मैं उत्तर में भी इसका उल्लेख करूँगा।
स्लम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.