टर्मिनल चौड़ाई में आउटपुट ट्रिमिंग के लिए उपयोग?


12

जब मैं करता हूं

ps aux

आउटपुट मेरे टर्मिनल की चौड़ाई पर अच्छी तरह से ट्रिम हो जाता है, ताकि लंबी प्रक्रिया विवरण एक पंक्ति से अधिक न लें। हालांकि, अगर मैं इसे किसी और चीज में पाइप करता हूं, तो लंबी लाइनें लौट आती हैं।

मुझे लगता है कि यह एक उचित व्यवहार है, क्योंकि पीएस अब एक ट्टी को आउटपुट नहीं दे रहा है और पूरा आउटपुट प्रोसेसिंग के लिए महत्वपूर्ण हो सकता है। मैं जो चाहता हूं वह एक और उपयोग है जो आउटपुट को वापस कर देगा जब मैं करूंगा।

मैं ऐसा कुछ करने में सक्षम होना चाहता हूं:

ps aux | grep -v 'www-data' | nowrap  

nowrapवह काल्पनिक उपकरण है जिसकी मुझे तलाश है। यह सुनिश्चित करेगा कि लंबी लाइनें क्रॉप हो जाए और ओवरफ्लो न हो।

क्या ऐसा कुछ है?

जवाबों:


15

cutआउटपुट को स्लाइस करने के लिए आप कमांड का उपयोग कर सकते हैं । उदाहरण के लिए:

ps aux | grep -v 'www-data' | cut -c-80

यह प्रत्येक पंक्ति के केवल पहले 80 अक्षरों को रखेगा। आप निश्चित रूप से यह निर्धारित कर सकते हैं कि आपको कितनी भी चौड़ाई चाहिए।

यदि बैश कमांडलाइन का उपयोग कर रहे हैं, तो आप ऐसा कर सकते हैं:

ps aux | grep -v 'www-data' | cut -c-$COLUMNS

यदि आउटपुट में टैब है, तो हो सकता है कि चौड़ाई सही ढंग से गणना न की जाए। expandस्थानों में टैब बदल सकते हैं:

ps aux | grep -v 'www-data' | expand | cut -c-$COLUMNS

1
... और अगर आप चाहते हैं कि आपका आउटपुट grep (जैसा कि मैं करूँ) के अनुसार आप cutपहले और grepबाद में रंगीन करें ।
डेरामाइक

और मैंने अपनी ~ / .bash_aliases फ़ाइल में एक उपनाम जोड़ा: alias cutt = 'cut -c - $ COLOSNS'। अब मैं सिर्फ काटने के लिए पाइप कर सकता हूं ...
सैमुअल लैंपा

1
यदि आउटपुट में टैब हैं तो यह दुर्व्यवहार करता है। कोई सुझाव? एक विकल्प पहले टैब को रिक्त स्थान में परिवर्तित करना है, लेकिन इससे बचना अच्छा होगा, अगर हम बाद में पाइपलाइन में टैब को संरक्षित करना चाहते हैं।
हारून मैकडैड

2
मैंने expandइसे शामिल करने के उत्तर को ढूंढा और संपादित किया। यह टैब के लिए सही है
हारून मैकडैड

3

आप आउटपुट का उपयोग करके फसल कर सकते हैं cut। जैसे

ps aux | grep -v 'www-data' | कट -c1 - $ {COLUMNS}

जहां ${COLUMNS}टर्मिनल की वर्तमान चौड़ाई प्रदान करता है। resizeआदेश वर्तमान चौड़ाई दोबारा बनाने के लिए इस्तेमाल किया जा सकता:

$ resize
COLUMNS=80;
LINES=24;
export COLUMNS LINES;

यदि आप इसे स्वचालित करना चाहते हैं, तो इसे स्क्रिप्ट में लपेटें nowrap:

#!/bin/bash

eval "export $(resize | grep 'COLUMNS=')"
cut -c1-${COLUMNS} -

2

और नगुल ने जो कहा उसके अलावा, आप बैश में उपयोग कर सकते हैं:

tput cols

चौड़ाई प्राप्त करने के लिए:

COLUMNS = $ (tput cols)

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