चूंकि आपको परिणाम में इसे शामिल किए बिना सामग्री का मिलान करने की आवश्यकता है (मिलान करना चाहिए, name="
लेकिन यह वांछित परिणाम का हिस्सा नहीं है) शून्य-चौड़ाई मिलान या समूह कैप्चरिंग के कुछ रूप की आवश्यकता है। यह निम्नलिखित उपकरणों के साथ आसानी से किया जा सकता है:
पर्ल
पर्ल के साथ आप n
लाइन से लूप लाइन के विकल्प का उपयोग कर सकते हैं और यदि यह मेल खाता है तो कैप्चरिंग ग्रुप की सामग्री प्रिंट कर सकते हैं:
perl -ne 'print "$1\n" if /name="(.*?)"/' filename
ग्नू ग्रीप
यदि आपके पास grep का उन्नत संस्करण है, जैसे GNU grep, तो आपके पास -P
विकल्प उपलब्ध हो सकता है । यह विकल्प पर्ल- \K
लाइक रेगेक्स को सक्षम करेगा, जिससे आप उपयोग कर सकते हैं जो शॉर्टहैंड लुकहैंड है। यह मैच की स्थिति को रीसेट कर देगा, इसलिए शून्य-चौड़ाई से पहले कुछ भी।
grep -Po 'name="\K.*?(?=")' filename
o
विकल्प बनाता है ग्रेप पूरी लाइन के स्थान पर केवल मिलान वाला पाठ मुद्रित करते है।
विम - पाठ संपादक
एक अन्य तरीका सीधे एक टेक्स्ट एडिटर का उपयोग करना है। विम के साथ, इसे पूरा करने के विभिन्न तरीकों में से एक बिना लाइनों को हटाना
name=
और फिर परिणामी लाइनों से सामग्री निकालना होगा:
:v/.*name="\v([^"]+).*/d|%s//\1
मानक grep
यदि आपके पास इन उपकरणों तक पहुंच नहीं है, तो किसी कारण से, मानक grep के साथ कुछ समान हासिल किया जा सकता है। हालांकि, इसके चारों ओर देखने के बिना बाद में कुछ सफाई की आवश्यकता होगी:
grep -o 'name="[^"]*"' filename
परिणामों को सहेजने के बारे में एक नोट
परिणामों के ऊपर सभी आदेशों में भेजा जाएगा stdout
। यह याद रखना महत्वपूर्ण है कि आप उन्हें फ़ाइल में जोड़कर हमेशा बचा सकते हैं:
> result
कमांड के अंत में।