सबसे सरल grep
कोड जो काम करेगा:
grep -xE '([^,]*,){10}[^,]*'
स्पष्टीकरण:
-x
यह सुनिश्चित करता है कि पैटर्न पूरे भाग से मेल खाए , बजाय इसके भाग के। यह महत्वपूर्ण है ताकि आप 10 से अधिक कॉमा के साथ लाइनों से मेल न खाएं।
-E
"विस्तारित रेगेक्स" का अर्थ है, जो आपके रेगेक्स में कम बैकस्लैश-बचने के लिए बनाता है।
कोष्ठक का उपयोग समूह बनाने के लिए किया जाता है, और {10}
बाद में इसका मतलब है कि परांठे के भीतर पैटर्न की एक पंक्ति में ठीक दस मैच होने चाहिए।
[^,]
एक वर्ण वर्ग है- उदाहरण के लिए, [c-f]
किसी भी एकल वर्ण से मेल खाएगा जो एक c
, एक d
, e
या एक है f
, और [^A-Z]
किसी भी एकल वर्ण से मेल खाएगा जो एक अपरकेस अक्षर नहीं है। इसलिए [^,]
कॉमा को छोड़कर किसी भी एकल वर्ण से मेल खाता है।
*
चरित्र वर्ग साधन के बाद "शून्य या इनमें से अधिक।"
तो रेगेक्स भाग का ([^,]*,)
अर्थ है "किसी भी वर्ण को छोड़कर कोई भी संख्या (शून्य काल सहित), इसके बाद अल्पविराम" और {10}
इनमें से 10 निर्दिष्ट करता है। फिर [^,]*
बाकी गैर-अल्पविराम वर्णों को पंक्ति के अंत तक मिलान करने के लिए।
sed
यहां होता है) केवल जहां तक एक से अधिक मिलान की तलाश की जाती है, हालांकि यह प्रश्न करता है। आपको इसे बंद नहीं करना चाहिए था।