किसी दी गई सीमा में * grep "लाइन की लंबाई * * के लिए कैसे नहीं है?


17

नोट: यह प्रश्न इस प्रश्नोत्तर का पूरक है: किसी श्रेणी में लाइन की लंबाई के लिए "grep" कैसे करें?


हम उन लाइनों के लिए कैसे जीआरई कर सकते हैं जिनमें 8 या 63 से कम अक्षर हैं, जिनमें कोई भी आठ से अधिक और 63 से कम वर्ण नहीं है?

तो, कुछ स्वीकार्य चरित्र मायने रखता है ...

7 6 5 4 3 2 1 0

...तथा...

64 65 66 67 ...

3
मुझे पता है कि आप पूछते हैं grep, लेकिन आप विचार कर सकते हैं awk, खासकर अगर आपको आगे की प्रक्रिया की आवश्यकता है, आदि (बहुत लचीला, और पठनीय ): awk '( length($0)<8 ) || ( length($0)>63 )' किसी स्थिति की #default क्रिया स्थिति से मेल खाते हुए लाइन को प्रिंट करना है। या, $ 0 पर कम प्रसंस्करण के साथ:awk '{ l=length($0) ; if (( l<8 ) || l>63 ) { print $0 ;} }'
ओलिवियर दुलैक

@mikeserv - हाँ इसे फिर से देखने में शायद इस क्यू एंड ए की ओर बंद करने के लिए और अधिक समझ में आता है।
slm

@mikeserv - यह आम तौर पर एक दर्द है, मुझे क्यू में से किसी एक में उत्तर को मर्ज करना होगा और वे फिर मूल से हटा दिए जाएंगे। इसे करने के लिए यह मार्गदर्शन है: "जब वे 99% समान होते हैं, तो प्रश्नों को मिला दिया जाना चाहिए और एक ही स्थान पर कई डुप्लिकेट प्रश्नों के सभी उत्तरों के लिए फायदेमंद होगा। यह उत्तर हटाता है, उन्हें लक्ष्य प्रश्न पर ले जाता है, और छोड़ देता है। अपने मर्ज के लक्ष्य के लिए एक कड़ी के रूप में वर्तमान प्रश्न। "
slm

मेरी टिप्पणी का क्या हुआ?
दिमित्री ग्रिगोरीव

@DmitryGrigoryev - लगता है कि किसी को यह पसंद नहीं आया। इसे वहां से ले जाओ जो वहां है - इसके बारे में भूल जाओ।
mikeserv

जवाबों:


38
grep -xv '.\{8,63\}' <input >output

grepके -xस्विच एक अर्थ है पूरी लाइन जो कहना है कि किसी भी पैटर्न मिलान किया पूंछ को सिर से एक रेखा को परिभाषित करना होगा है - मैच। करते हुए...

grep -x pattern

... आम तौर पर इसके बराबर है ...

grep ^pattern$

grepके -vस्विच लाइन चयन पर एक पैटर्न के प्रभाव को नकारता। आम तौर पर कर ...

grep pattern

... -vकेवल उन रेखाओं का चयन करेंगे जो पैटर्न से मेल खाते हैं, लेकिन एक नकारात्मक पैटर्न के साथ केवल वे रेखाएं जो मेल नहीं खाती हैं, का चयन किया जाता है।

...इसलिए...

grep -xv '.\{8,63\}'

... उन सभी रेखाओं से मेल खाता है जो 8 से 63 वर्णों के बीच सिर से लेकर पूंछ तक होती हैं, और -vनकारा हुआ चयन grepही सब कुछ छापने का कारण बनता है।

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