regex - Add/Insert lines before pattern such that lines to be added have part of the pattern in uppercase -
मुझे क्लास घोषणापत्र से पहले संकलक डायरेक्टिव्स को जोड़ना है:
`ifndef MIPI_RFFE_SCOREBOARD__SV` परिभाषित करें MIPI_RFFE_SCOREBOARD__SV वर्ग mipi_rffe_scoreboard uvm_scoreboard फैली;
मैंने कोशिश की:
sed 's / class (\ w +) (। *) / \ \ Ifndef \ u \ 1__SV \ 2 /' mipi_rffe_scoreboard .sv
जो देता है:
sed: -e अभिव्यक्ति # 1, चार 38: अवैध संदर्भ \ 2 पर `s 'कमांड के आरएचएस
मैंने देखा है कमल के जवाब में केवल समस्या का एक हिस्सा ही निकलता है क्योंकि मुझे "mipi_rffe_scoreboard" पर कब्जा करने की आवश्यकता है और इसे अपरकेस में बदलना
< P> आप अपनी फाइल पर यह पर्ल एक-लाइनर चला सकते हैं:
perl -pe 's / (class (\ w +)) / `ifndef \ u $ 2 \ e__sv \ n' define \ यू $ 2 \ ई__ एस वी \ n \ n $ 1 / '
यह एक शब्द के बाद "वर्ग" वाले रेखाओं को कैप्चर करता है और दो पंक्तियों को तैयार करता है \ U
का उपयोग रूपांतरण को समाप्त करने के लिए मैच को अपरकेस और \ E
में बदलने के लिए किया जाता है।
इसे जांचना:
$ perl -pe 's / (class (\ w +)) / `ifndef \ u $ 2 \ E__SV \ n' परिभाषित करें \ U $ 2 \ E__SV \ n \ n $ 1 / '& lt; & lt; & lt;" class mipi_rffe_scoreboard Uvm_scoreboard विस्तार; " `एन्डेफ एमआईपीआई_आरएफएफसीएससीएआरओएबोर्डडीएसवी` एमआईपीआई_आरएफएफसीएससीएआरएसओबीडीडीएसएसवी वर्ग को परिभाषित करता है एमआईपीआई_रफ़्फ़_कोरकोरबोर्ड यूवीएम_स्कॉर्टबोर्ड फैलाता है;
वैकल्पिक रूप से (GNU sed पर परीक्षण किया गया है, मुझे पूर्ण विश्वास है कि यह अन्य संस्करणों पर काम नहीं करेगा):
sed -r 's / वर्ग (\ w +) / `एन्डेफ \ यू \ 1 \ ई__ एस वी \ n` डिफाईन \ यू 1 एडी ई एस एस \ n \ n & amp; / '
-आर विस्तारित रेगेक्स मोड को सक्षम करता है, जो आपको पैटर्न पर कब्जा करने के लिए
()
का उपयोग करने की अनुमति देता है सामान्यतः, आपको \ (\)
।
Comments
Post a Comment