Grep का उपयोग करते समय लाइन की लंबाई की सीमा कैसे तय करें (लाइन की लंबाई के अनुसार फ़िल्टर करें)?


8

उपयोग का मामला यह है कि मैं HTML / CSS / JS फ़ाइलों (उप-निर्देशिकाओं सहित) की निर्देशिका में एक विशेष CSS विशेषता की खोज कर रहा हूं। कुछ एक-लाइनर जेएस पुस्तकालयों में सीएसएस विशेषता भी है जो मैं खोज रहा हूं।

तो क्या जीआरईपी को यह बताने का कोई तरीका है कि उसे एक लाइन पर परिणाम नहीं देना चाहिए जो मेरे परिभाषित $ max_line_length से अधिक है?

धन्यवाद!

जवाबों:


12

पहला तरीका, एक-लाइनर जेएस फाइलों को पहले स्थान पर रखने से रोकने की कोशिश करें। अक्सर इनका नाम कुछ Library-min.js जैसा होगा, इसलिए आप कुछ ऐसा कर सकते हैं:

$ grep --exclude '*.min.js' ...

एक और दृष्टिकोण है कि यदि आप जानते हैं कि यह एक सीएसएस फ़ाइल में होने जा रहा है, तो आप उपयोग कर सकते हैं पावती सीएसएस फ़ाइलों के लिए अपनी खोज को सीमित करने के लिए (और विभिन्न VCS cruft उपेक्षा):

$ ack --type=css ...

हालांकि, अपने प्रश्न का उत्तर देने के लिए, आप लाइन की लंबाई पर मेल करने के लिए एक नियमित अभिव्यक्ति लिख सकते हैं। निम्नलिखित 100 या उससे कम वर्णों के साथ किसी भी पंक्ति से मेल खाएगा।

$ grep -E '^.{,100}$'

2
ack-grepकुछ प्रणालियों पर +1
डेनिस विलियमसन

1
इसके अलावा, ऐक की गई जावास्क्रिप्ट फ़ाइलों को अनदेखा करेगा। यह उन्हें स्रोत कोड नहीं होने के रूप में देखता है, और इसलिए अनदेखा करता है।
एंडी लेस्टर

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