संपूर्ण फ़ाइल के लिए स्टार विशिष्ट पैटर्न के साथ नंबर बदलें


2

अपनी फाइल में मैं नंबर को बदलना चाहता हूं *

उदाहरण:

data[0] ---> data[*]

मेरे पास है data[0] सेवा मेरे data[127] और पूरी फ़ाइल के लिए भी करना चाहते हैं। तो मैं केवल संख्या के लिए कैसे कर सकता हूं?

मैंने कमांड के साथ कोशिश की

sed 's/[[0-9][0-9]]/[*]/g'

लेकिन यह ठीक से काम नहीं करता है।

तो कृपया मेरा मार्गदर्शन करें।


यह उतना सरल क्यों नहीं होना चाहिए sed 's/[0-9]/*/g ?
datdinhquoc

1
इसका असर दूसरे नंबर पर भी पड़ेगा। मान लें कि set_load -pin_load 0.5 [get_ports {data [25]}] तो यह 0.5 से * में भी बदल जाएगा।
Vishal Patel

जब आपने कोशिश की थी कि यह वर्ग वर्ग कोष्ठक से बच नहीं रहा है जब आप नहीं चाहते कि उनका कोई विशेष अर्थ हो।
simlev

जवाबों:


0

यह चौकोर कोष्ठक के अंदर सभी अंकों को तारांकन के लिए प्रतिस्थापित करेगा:

sed 's/\[[0-9]*\]/\[*\]/g'

1
मेरा मानना ​​है कि प्रतिस्थापन अनुभाग में वर्ग कोष्ठक से बचने की कोई आवश्यकता नहीं है, क्योंकि उनका वहां कोई विशेष अर्थ नहीं है।
simlev

0

उत्तर: यहां बताया गया है कि आप अपनी SED अभिव्यक्ति को कैसे संशोधित कर सकते हैं ( sed 's/[[0-9][0-9]]/[*]/g' ):

sed -E 's/\[[0-9]{1,3}]/[*]/g'

स्पष्टीकरण:

  • प्रारंभिक वर्ग कोष्ठक से बचें [ बैकस्लैश के साथ \ क्योंकि आप चाहते हैं कि अभिव्यक्ति शाब्दिक रूप से मेल खाए [ वर्ग कोष्ठक के बीच आपके द्वारा लिखे गए किसी भी पात्र के विपरीत। बाद के वर्ग कोष्ठक से बचने की आवश्यकता नहीं है।

  • निर्दिष्ट करें कि आप कितने अंकों का मिलान करना चाहते हैं: {1,3} किसी भी प्राकृतिक संख्या से शुरू होता है 1 और तक 3। इस काम के लिए, आपको सक्षम करने की आवश्यकता है विस्तारित नियमित अभिव्यक्ति उसके साथ -E स्विच (इसके बिना आप संतुष्ट हो सकते हैं sed 's/\[[0-9]*]/[*]/g' )। यह आपके में उपलब्ध होना चाहिए sed तब से, के अनुसार man sed:

    -E विकल्प को GNU sed द्वारा वर्षों से समर्थित किया गया है, और अब इसे POSIX में शामिल किया गया है।


यहाँ पर्ल विकल्प:

perl -pe 's/data\[\K\d+(?=])/*/g'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.