एक sed या awk स्ट्रीम में हेडर और / या पाद कैसे जोड़ें?


14

मेरे पास आउटपुट का एक गुच्छा है जो sed और awk से गुजर रहा है।

मैं START के साथ आउटपुट को कैसे उपसर्ग कर सकता हूं और END के साथ उत्तर प्रत्यय कर सकता हूं?

उदाहरण के लिए, यदि मेरे पास है

All this code
on all these lines
and all these

मैं कैसे मिल सकता है:

START
All this code
on all these lines
and all these
END

?

मेरा प्रयास था:

awk '{print "START";print;print "END"}'

लेकिन मुझे मिल गया

...
START
    All this code
END
START
    on all these lines
END
START
    and all these
END

जवाबों:



11

इस में किया जा सकता sedके साथ

sed -e $'1i\\\nSTART' -e $'$a\\\nEND'

1iइसका मतलब है कि मैं लाइन 1 से पहले nsert; अंतिम पंक्ति के बाद ppend का $aमतलब है$'…'वाक्य रचना बैश-विशिष्ट है। अन्य गोले में, आपको यह करने में सक्षम होना चाहिए:

sed -e '1i \ Enter
START' -e '$ a \ Enter
END'Enter

8

यदि आप पहले से ही सेड का उपयोग कर रहे हैं, तो आप 1पहली पंक्ति का उपयोग कर सकते हैं और $अंतिम पंक्ति का मिलान कर सकते हैं ( स्कॉट का जवाब देखें )। यदि आप पहले से ही awk का उपयोग कर रहे हैं, तो आप BEGINपहली पंक्ति से पहले कोड चलाने के लिए एक ब्लॉक का उपयोग कर सकते हैं और ENDअंतिम पंक्ति के बाद कोड चलाने के लिए एक ब्लॉक ( माइकल डुरंट का उत्तर देखें )।

अगर आपको केवल एक हेडर और एक पाद जोड़ने की आवश्यकता है, तो बस उपयोग करें echoऔर cat

echo START
cat
echo END

एक पाइप लाइन में, कई कमांड चलाने के { … }लिए, पार्सर को बताने के लिए उपयोग करें कि वे एक एकल कंपाउंड कमांड हैं।

content-generator |
{ echo START; cat; echo END; } |
postprocessor
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.