Grep या ack द्वारा लौटाई गई लंबी मिलान वाली लाइनों को कैसे छीनना है




unix (4)

आप grep विकल्प -o उपयोग कर सकते हैं, संभवतः अपने पैटर्न को बदलने के संयोजन में ".{0,10}<original pattern>.{0,10}" इसके आसपास कुछ संदर्भ देखने के लिए:

       -o, --only-matching
              Show only the part of a matching line that matches PATTERN.

.. या -c :

       -c, --count
              Suppress normal output; instead print a count of matching  lines
              for  each  input  file.  With the -v, --invert-match option (see
              below), count non-matching lines.

मैं HTML फ़ाइलों पर एएके या grep चलाने के लिए चाहता हूं जो अक्सर बहुत लंबी लाइनें होती है। मैं बार-बार लपेटने वाली बहुत लंबी रेखाएं नहीं देखना चाहता हूं। लेकिन मैं एक लंबी रेखा के उस भाग को देखना चाहता हूं जो एक नियमित स्ट्रिंग से मेल खाने वाली स्ट्रिंग से घिरा हुआ हो। यूनिक्स टूल्स के किसी भी संयोजन का उपयोग करके मैं इसे कैसे प्राप्त कर सकता हूं?


आप एके के लिए पेजर के रूप में कम उपयोग कर सकते हैं और लंबी लाइनों काट सकते हैं: ack --pager="less -S" यह लंबी रेखा को बरकरार रखता है लेकिन इसे लपेटने के बजाय इसे एक पंक्ति पर छोड़ देता है। रेखा के अधिक देखने के लिए, तीर कुंजियों के साथ कम में बाएं / दाएं स्क्रॉल करें।

मेरे पास यह करने के लिए एएके के लिए निम्न उपनाम सेटअप है:

alias ick='ack -i --pager="less -R -S"' 

cut माध्यम से अपने परिणाम पाइप। मैं एक --cut स्विच जोड़ने पर भी विचार कर रहा हूं ताकि आप कह --cut=80 और केवल 80 कॉलम प्राप्त करें।


cut -c 1-100

1 से 100 के पात्र प्राप्त करता है।