मेरे पास रेग्क्स है [1]
(/foo/bar/(GW|GREV)[^/]*).*
मैं GNU sed के साथ काम करने के लिए इसे प्राप्त करने में सक्षम था
sed -n 's/\(\/foo\/bar\/\(GW\|GREV\)[^\/]*\).*/\1/p'
लेकिन यह एक आधुनिक GNU sed था और मैं Solaris 10 में एक प्राचीन सेड के साथ हूँ। शायद इसे पोर्ट करना संभव है लेकिन यह मेरी क्षमता से परे है। हालांकि, मेरे पास मेरे पास 5.8 उपलब्ध हैं, इसलिए मेरा सवाल है: मैं एक पर्ल लाइनर में मिलान किए गए उपसमूह को कैसे प्राप्त कर सकता हूं?
[1] इसका सार यह है कि मैं सभी निर्देशिकाओं का मिलान करना चाहता हूं जो प्रपत्र / foo / bar / GWxxx, / foo / bar / GREVxxx से मेल खाते हैं और उस मूल निर्देशिका को प्रिंट करते हैं। तो निम्नलिखित तार के लिए, मैं हमेशा मिलता हूं
/foo/bar/GREV123
पकड़े गए समूह के रूप में: /foo/bar/GREV123
/foo/bar/GREV123/
/foo/bar/GREV123/etc
मैं grep की कोशिश कर सकता हूं, लेकिन एक बार फिर से मेरे पास grep / egrep सोलारिस 10 है, न कि पूरी तरह से चित्रित GNU grep
—
ldrg
grep
? gnu.org/software/grep/manual/grep.html एक लिस्टिंग पाने के लिए काफी आसान होगा, फिर इसे पाइप में डालेंgrep
। अगर/foo/bar/GREV123
उसके बाद आप क्या कर रहे हैं आप अपने एक्सप्रेशन को सीमित कर सकते हैं grep में केवल आपको वह रिटर्न देने के लिए।