2015-09-16 7 views
8

मैं बैश स्क्रिप्ट में नया हूं और sed का उपयोग करके मेरी फाइल में कुछ शब्दों को बदलने की कोशिश कर रहा हूं। बाद बैश मैं अपने लिपि में उपयोग करते हैं:सेड त्रुटि: विकल्प कमांड में खराब ध्वज: 'यू'

sed -i '' "s/<pre>.*<\/pre>/<pre>($NEWNAME) $MD5<\/pre>/"~/Desktop/replace.html 

और मैं त्रुटि संदेश कह रही है: bad flag in substitute command: 'U'। मैं डबल कोट का उपयोग करता हूं क्योंकि मुझे चर डालने की आवश्यकता है।

मेरा पर्यावरण मैक है।

======================================

1.Turns बाहर मैं स्ट्रिंग स्ट्रिंग और फ़ाइल नाम के बीच एक जगह छोड़ना भूल गया। जिसके परिणामस्वरूप हमेशा परिणाम दिखाया गया: bad flag in substitute command: '~'। यह अब काम करता है।

2. कारण मैं MD5=$(md5 path) इस्तेमाल किया जो MD5 (path) ***** की reault हो जाता है MD5 मान बनाने के लिए है, और पथ / जो regex टूट जाता है शामिल हैं। MD5=$(md5 -q path) बदलने के बाद, यह ठीक रहेगा।

+1

HTML संपादित करने के लिए टेक्स्ट प्रोसेसिंग टूल का उपयोग न करें। HTML के साथ काम करने के लिए डिज़ाइन किए गए टूल का उपयोग करें। –

+0

@ टॉमफेनेच धन्यवाद। लेकिन मुझे फाइलों को अपलोड करना होगा और शैल स्क्रिप्ट का उपयोग करके HTML में md5 मान को बदलना होगा। क्या आपके पास इसके लिए कुछ बेहतर विचार है? – JasmineOT

+0

एक ऐसी भाषा का उपयोग करें जो HTML, जैसे कि पर्ल, पायथन, PHP, रूबी, संपादित करने का समर्थन करता है ... –

उत्तर

10

सबसे अधिक संभावना है कि आपके $NEWNAME चर में इसके आगे एक फिसल गया है, जिसका उपयोग sed में रेगेक्स डेलीमीटर के रूप में किया जा रहा है। को वैकल्पिक डिलीमीटर के साथ आज़माएं। ~:

sed -i '' "s~<pre>.*</pre>~<pre>($NEWNAME) $MD5</pre>~" ~/Desktop/replace.html 
+0

आपके त्वरित उत्तर के लिए धन्यवाद। मैं इन चरों को प्रतिबिंबित करता हूं और 'MD5' आगे स्लैश प्राप्त करता हूं। लेकिन '~ 'जैसे वैकल्पिक डिलीमीटर का उपयोग इसी तरह की गलती होगी:' विकल्प कमांड में खराब ध्वज: '~'' – JasmineOT

+0

आप नियंत्रण वर्णों को sed delimiter के रूप में भी उपयोग कर सकते हैं उदा। 'sed -i' '' s^ए

.*
^ए
($NEWNAME) $MD5
^ए "' जहां '^ ए 'को' नियंत्रण-वी-ए 'दबाकर टाइप किया गया है। – anubhava

+0

ठीक है, ईमानदार होने के लिए, यह पहली बार है जब मैं वैकल्पिक डेलीमीटर की अवधारणा में आया हूं। तो बहुत बहुत धन्यवाद। मैं कोशिश जारी रखूंगा। – JasmineOT

संबंधित मुद्दे