में इस संपादित
स्टीफन Chazelas POSIXifies (फिर से) मेरी sedएक डालने से स्वरूपण -eहै xpression को तोड़ने और एक अन्य -eहै xpression बयान। अब, मैं उनसे सिर्फ यह पूछ सकता हूं कि टिप्पणियों में क्यों, मुझे लगता है, लेकिन यह पहले से ही उस उत्तर पर संख्या 18 में संशोधन कर रहा है और लगभग पिछले सभी पहले से ही समान मुफ्त के लिए धन्यवाद थे (यदि आप हटाए गए टिप्पणियों को देख सकते हैं तो आपको पता चल जाएगा कि आपको क्या पता होगा मेरा मतलब है) । इसके अलावा, मुझे लगता है कि मैं यह समझने के लिए पर्याप्त हूं कि इसे इस तरह से वाक्यांश क्यों कहा जाए जो आमतौर पर अधिक उपयोगी हो। तो यहाँ उम्मीद है ...
मैं आम तौर पर मेरी कुल रखना पसंद करते हैं sed -eएक के लिए xpressions अगर मैं हो सकता है, लेकिन मैं यह भी के अनुरूप के लिए एक बड़ा प्राथमिकता है कल्पना नहीं एक से अधिक है, खासकर जब अंतर मात्रा के रूप में मैं कर सकते हैं पास के रूप में <space>और एक -e। लेकिन मैं यह नहीं कर सकता अगर मुझे समझ में नहीं आता कि मुझे क्यों करना चाहिए। यहां मेरी समझ की वर्तमान स्थिति का संक्षिप्त विवरण दिया गया है:
' -e 'ब्रेक portably एक के लिए में खड़े हो सकते हैंsedस्क्रिप्ट\nएक में ewline ब्रेकsedकमांड लाइन बयान ... मैं क्यों के बारे में बेशक फजी हूँकिसी
sed{फंक्शन में क्लोजिंग ब्रेस को यहां बताए गए ईवलाइन ब्रेक}से पहले होना चाहिए\n:<right-brace>एक से पहले किया जाएगा<newline>और पहले या पालन किया जा सकता द्वारा<blank>पात्रों।
एक
\newline तोड़ इसी तरह की ... किसी भी उपयोग निम्नलिखित की आवश्यकता हैa,b,c,i,r,t,w, या:।
लेकिन मुझे स्पष्ट रूप से समझ में नहीं आता है कि {फ़ंक्शन की }परिभाषा कैसे !नहीं ऑपरेटर से संबंधित है । केवल उल्लेख मैं उल्लेख राज्यों में उपेक्षा ऑपरेटर की:
- एक फ़ंक्शन को एक या एक से अधिक
!वर्णों से पहले किया जा सकता है , जिस स्थिति में फ़ंक्शन को लागू किया जाएगा यदि पते पैटर्न के स्थान का चयन नहीं करते हैं।
इसका मतलब यह है कि एक !तात्कालिक {ब्रेसिज़ का उपयोग करें }? $!आज्ञाओं का क्या - क्या उन्हें इसी तरह ' -e 'टूटने से अलग किया जाना चाहिए ? यह क्या संबोधित किया गया था जब स्टीफन सबसे हाल ही में POSIXified मेरा उत्तर?
मुझे लगता है कि यह या तो !नकारात्मक संचालक है, या यह bरैंच स्टेटमेंट है जिसे वह अपने संपादन में संबोधित करता है - या संभवतः यह दोनों एक ही बार में है - लेकिन मुझे नहीं पता और इसे पसंद करना चाहिए। अगर ऐसा है हीb खेत बयान है, तो मेरा मानना है कि एक dउसके स्थान पर है और आवश्यकता को समाप्त होगा ' -e 'तोड़ने, लेकिन मेरे लिए एक तीन बार hazarding से पहले कुछ होगा POSIXified जवाब। क्या आप मदद कर सकते हैं?
मैं यह जोखिम किया सब के बाद , लेकिन किसी भी महान निश्चितता के साथ नहीं ...
:हिस्सा मिलता है - जो आपने घर पर महीनों पहले चलाया था। लेकिन मुझे पूरी तरह से समझ में नहीं आता है कि दूसरी sedकमान भी इसी तरह से क्यों बनाई गई थी ।
sedबहुत अस्पष्ट है। मैंने अतीत में कुछ बार स्पष्टीकरण का अनुरोध किया है, लेकिन मुझे नहीं लगता कि परिणामस्वरूप इसे अपडेट किया गया था। एक अच्छा परीक्षण है हीरलूम टूलचैस्ट (सोलारिस एक, मूल से लिया गया और जिसे पोसिक्स कल्पना काफी हद तक आधारित है) के साथ आजमाना है।
s///ubstitutions एक के साथ जंजीर स्वीकार करने के लिए कल्पना कर रहे हैं ; । यह उन आदेशों के आसपास धुंधला हो जाता है, जिन्हें एक नई पंक्ति के साथ सीमांकित किया जाना चाहिए और -eउस स्थिति में कैसे खड़े हो सकते हैं - कम से कम यह मेरे लिए करता है। ive अभी तक sedउस पर ठोकर खाने के लिए नहीं है, हालांकि उनकी व्याख्या बहुत ही पारस्परिक रूप से की जाती है।
;एक नई पंक्ति से पहले की आवश्यकता नहीं है - एक नई पंक्ति ठीक है। ईमानदारी से, आप पूरी तरह से और बिना पूरी तरह से कर सकते हैं -eऔर एक फाइल को लिख सकते हैं जैसे #!/bin/sedकि प्रत्येक कमांड के साथ एक नई लाइन पर - या जिनके साथ सीमांकित के बजाय ऐसे सीमांकक की आवश्यकता नहीं है ;। जो कि कर - नई-पंक्तियों की आवश्यकता होती है आमतौर पर जो कि मनमाने ढंग से इनपुट ले रहे हैं :लेबल का नाम और आदेशों की तरह उन्हें bया tया बंद करने }के कार्य अथवा के लिए curlies rEAD और wसंस्कार जो फ़ाइल नाम आर्ग ले। उन सभी को आंशिक रूप से पालन करने की आवश्यकता है \n।
b;n;:b, आप";n;:b"ऐतिहासिक और POSIX seds (और GNU सेड उस संबंध में नहीं है) में लेबल के लिए शाखा कर रहे हैं ।