मैं अपाचे कॉन्फ़िगरेशन से सभी लाइनों को आउटपुट करने की कोशिश कर रहा हूं और टिप्पणियों के बिना महत्वपूर्ण लाइनों को दिखाने की कोशिश कर रहा हूं (लाइनें जो # या रिक्त लाइनों [$] से शुरू होती हैं), ऐसा करने के लिए मैंने किया:
sed "/^#|^$/d" httpd.conf
लेकिन यह अभी भी कुछ रेखाएं दिखाता है यदि उनके पास उस चरित्र से पहले रिक्त स्थान या टैब है।
क्या इसमें कोई फिक्स है? यदि संभव हो तो मैं अजीब या किसी अन्य उपकरण के बजाय sed का उपयोग करना चाहूंगा।
उत्तर:
जवाब के लिए 3 № 1जोड़ना [ t]*
वैकल्पिक रूप से रिक्त स्थान और टैब से मिलान करने के लिए रेगेक्स पर।
sed "/^[ t]*#|^[ t]*$/d" httpd.conf
या, पुनरावृत्ति से बचने के लिए कोष्ठक का उपयोग करना:
sed "/^[ t]*(#|$)/d" httpd.conf
उत्तर № 2 के लिए 1
sed "/^[[:space:]]*[#$]/d" httpd.conf
मेरे लिये कार्य करता है।
$ cat httpd.conf
TEST1
# test2
# test3
TESTkkk
$ Another comment
$ Another comment2
# Another comment
# Another comment with tab
$ sed "/^[[:space:]]*[#$]/d" httpd.conf
TEST1
TESTkkk
वह अभिव्यक्ति कहती है कि अगर पहले चरित्र, किसी भी स्थान के बाद, सेट से वर्णों में से एक है #$
, तो हटाएं (d
) आउटपुट से वह लाइन।
अद्यतन करें: [[:space:]]
टैब के लिए भी मेरे लिए काम किया, हालांकि वैकल्पिक, पर आधारित https://superuser.com/a/786423/44976 है:
sed "/^[ t]*[#$]/d" httpd.conf
इन दोनों अभिव्यक्तियों को ओएसएक्स पर निम्न संस्करण पर परीक्षण किया गया था:
sed (GNU sed) 4.2.2 Copyright (C) 2012 Free Software Foundation, Inc.