लिनक्स में, मैं कमांड-लाइन आउटपुट को कैसे छोटा करूं?


56

अगर मैं grep -nr sumthin *अपने सोर्स कोड डायरेक्टरी में हूं, तो यह मिनिमाइज्ड जावास्क्रिप्ट या सीएसएस फाइलों से बहुत लंबी लाइनें निकालता है। मैं प्रति पंक्ति केवल पहले 80 वर्ण प्राप्त करना चाहता हूं।

उदाहरण के लिए, एक नियमित grepमुझे यह देता है:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:10px;z-index:13;}.arrow2{cursor:pointer;position:absolute;right:5px;bottom:10px;z-index:13;}.calendarModule{z-index:100;}.calendarFooterContainer{height:25px;text-align:center;width:100%!important;z-index:15;position:relative;font-size:15px!important;padding:-2px 0 3px 0;clear:both!important;border-left:1px solid #CCC;border-right:1px  ... etc.

लेकिन मैं इसके बजाय सिर्फ यही प्राप्त करना चाहूंगा:

css/style.css:21:   behavior: url("css/iepngfix.htc")
css/style-min.css:4:.arrow1{cursor:pointer;position:absolute;left:5px;bottom:

लिनक्स कमांड यह क्या कर सकता है?


"न्यूनतम किया गया?" इसका क्या मतलब है?
CarlF


धन्यवाद। सही लिंक है en.wikipedia.org/wiki/Minification_%28programming%29
CarlF

दोनों लिंक मेरे लिए एक ही पृष्ठ पर ले जाते हैं।
विक्टर

जवाबों:


80

OMG, मैं पूरी तरह से भूल गया cut!

grep -nr sumthin * | cut -c -80

^ चाल करता है! > _ <


4
अगर बच के अनुक्रम या रंग कोड शामिल नहीं हैं; उदाहरण के लिएgit log --oneline --graph --color=always | cut -c -$COLUMNS
badp

1
मुझे लगता है कि यह बिल्कुल 80 प्रदर्शित वर्णों में छोटा नहीं है, लेकिन यह अभी भी मेरी समस्या को हल करता है: कोई भी रेखा नहीं लपेटती है, इसलिए आप अभी भी प्रत्येक पंक्ति के प्रमुख भाग को देखते हैं (जो मेरे विशिष्ट उपयोग के मामले में महत्वपूर्ण है, इसलिए मैं का <file>:<linenumber>आउटपुट देख सकते हैं grep -n)।
निक्की इरविन रामिरेज़

1
लंबे समय तक टिप्पणियाँ भी आपके नमूना कमांड के आउटपुट को "तोड़" देती हैं, यदि नहीं काटे गए। git log --oneline --graph --color=always | moreलिपटे पाठ से बाधित ग्राफ दिखाएगा। i.imgur.com/X8G7SIV.png
निक्की इरविन रामिरेज़

हाँ, यही कारण है कि मैं इस सवाल के साथ शुरू करने के लिए googled :)
badp

5
यदि उद्देश्य सिर्फ चीजों को अच्छी तरह से देखने में सक्षम होना है (उत्पादन को उपयोग के लिए कहीं पुनर्निर्देशित नहीं करना है) तो less -Sआप क्या चाहते हैं। -Sहै --chop-long-lines। मूल रूप से, यह लाइन रैपिंग को बंद कर देता है
एंट्रॉपी

5

cutआपके अलावा अन्य fold(और कुछ मामलों में fmt) का उपयोग कर सकते हैं । पैकेज
foldका हिस्सा है coreutils

$ echo "some very long long long text" | fold -w 5   # fold on 5 chars per line
some 
very 
long 
long 
long 
text

foldशेष पाठ को नहीं काटता है, लेकिन अगली पंक्ति में इसे आउटपुट करता है।


इसके लिए धन्यवाद, यह भविष्य में उपयोगी हो सकता है। मेरे मामले में, मैं वास्तव में पाठ में कटौती करना चाहता था, इसलिए आंख से आसान स्कैनिंग के लिए आउटपुट के file:linenumberउपसर्ग grepसन्निहित हैं।
निक्की इरविन रामिरेज़ 4

1

जबकि वास्तव में आप क्या करना चाहते हैं, आप awkनिश्चित संख्या में कॉलम प्रिंट करने के लिए उपयोग कर सकते हैं। आप इस मामले में परिसीमन को ":" निर्दिष्ट कर सकते हैं।


हालांकि कोई विशिष्ट परिसीमन नहीं है। मैं वास्तव में एक विशिष्ट लंबाई में आउटपुट काट रहा हूं, इसे टर्मिनल में 1 पंक्ति में फिट करने के लिए।
निक्की इरविन रामिरेज़

@ निक्की तो कट है जो आप चाहते हैं। मुझे यकीन है कि आप एक ही चीज़ पाने के लिए अजीब से कुछ कर सकते हैं लेकिन वास्तव में, कट आसान है। ^ _-
सरदारथियन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.