में इस संपादित
स्टीफन 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>
पात्रों।
एक
\n
ewline तोड़ इसी तरह की ... किसी भी उपयोग निम्नलिखित की आवश्यकता है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 r
EAD और w
संस्कार जो फ़ाइल नाम आर्ग ले। उन सभी को आंशिक रूप से पालन करने की आवश्यकता है \n
।
b;n;:b
, आप";n;:b"
ऐतिहासिक और POSIX seds (और GNU सेड उस संबंध में नहीं है) में लेबल के लिए शाखा कर रहे हैं ।