regex दो वाक्यांशों(वाक्यांशों सहित) के बीच पाठ के ब्लॉक ढूंढने के लिए Grep का उपयोग करें




linux unix (3)

आप इसके बजाय sed का उपयोग कर सकते हैं:

sed -n '/mutablePath = CGPathCreateMutable();/,/CGPathAddPath(skinMutablePath, NULL, mutablePath);/p' infile

संपादित करें:

सुनिश्चित नहीं है कि -P में grep का -P फ्लैग समर्थित है। यदि ऐसा है तो आप इसका उपयोग कर सकते हैं:

grep -oP 'mutablePath = CGPathCreateMutable();\X*CGPathAddPath(skinMutablePath, NULL, mutablePath);/' infile

जीआरपी मैन पेज के अनुसार:

-पी, --परल- regexp पर्ल रेगुलर एक्सप्रेशन के रूप में PATTERN व्याख्या करें।

क्या इस से शुरू होने वाले सभी लेखों को उच्च लाइट के लिए grep का उपयोग करना संभव है:

mutablePath = CGPathCreateMutable();

और साथ समाप्त:

CGPathAddPath(skinMutablePath, NULL, mutablePath);

जहां उन दोनों वाक्यांशों के बीच में एक मस्तिष्क का पाठ होता है?

नोट: मुझे grep उपयोग करना है क्योंकि मैं BBEdit का उपयोग कर रहा हूँ


यदि आप उन लाइनों को मुद्रित करना चाहते हैं जिनमें इनके अलावा आप उपयोग कर सकते हैं:

perl -ne '/start line/ .. /end line/ and print'

आपको GNU grep का उपयोग करने की आवश्यकता होगी:

grep -oPz 'mutablePath = CGPathCreateMutable\(\);.*?(\n.*?)*.*?CGPathAddPath\(skinMutablePath, NULL, mutablePath\);' file

यदि आपके पास GNU grep नहीं है, तो आप एक ही चीज़ प्राप्त करने के लिए pcregrep का उपयोग कर सकते हैं:

pcregrep -M 'mutablePath = CGPathCreateMutable\(\);.*(\n|.)*CGPathAddPath\(skinMutablePath, NULL, mutablePath\);' file




bbedit