मैं कुछ फाइलों से लाइनें निकालने की कोशिश कर रहा हूं जो # से शुरू नहीं होती हैं (टिप्पणी की गई)। मैं एक फ़ाइल के माध्यम से कैसे चलाऊंगा, इसके सामने # के साथ सब कुछ अनदेखा कर दूंगा, लेकिन प्रत्येक पंक्ति को कॉपी करें जो एक अलग फ़ाइल में # से शुरू नहीं होती है।
धन्यवाद
3 जवाब
सरल: grep -v '^[[:space:]]*#' input.txt > output.txt
यह मानता है कि आप यूनिक्स/लिनक्स शेल और कमांड के उपलब्ध यूनिक्स टूलकिट का उपयोग कर रहे हैं और आप मूल फ़ाइल की एक प्रति रखना चाहते हैं।
cp file file.orig
mv file file.fix
sed '/^[ ]*#/d' file.fix > file
rm file.fix
या यदि आपके पास एक अच्छा चमकदार नया जीएनयू sed है जिसे सभी के रूप में संक्षेपित किया गया है
cp file file.orig
sed -i '/^[ ]*#/d' file
दोनों ही मामलों में, sed कमांड में regexp का मतलब [spaceCharTabChar]
है तो आप कह रहे हैं, किसी भी लाइन को हटा दें जो (वैकल्पिक स्थान या टैब वर्ण) # से शुरू होती है, लेकिन बाकी सब कुछ प्रिंट करें।
आशा है कि ये आपकी मदद करेगा।
grep -v '^/[ ]*#/' file
थोड़ा आसान है।
grep -v
भी काम करता है। साथ ही, कई seds @pulsar द्वारा समर्थित [[:space:]]
सिंटैक्स का समर्थन करते हैं, इसलिए पहले इसे प्रतिस्थापित करने का प्रयास करें।
grep -v ^\# file > newfile
grep -v ^\# file | grep -v ^$ > newfile
फैंसी रेगेक्स नहीं, लेकिन मैं जूनियर एडमिन को यह विधि प्रदान करता हूं क्योंकि यह पाइप और पुनर्निर्देशन को समझने में मदद करता है।
संबंधित सवाल
नए सवाल
shell
'शेल' शब्द का अर्थ सामान्य रूप से टेक्स्ट-आधारित इंटरएक्टिव कमांड दुभाषियों के एक सामान्य वर्ग से है, जो अक्सर यूनिक्स और लिनक्स ऑपरेटिंग सिस्टम से जुड़ा होता है। शेल स्क्रिप्टिंग के बारे में प्रश्नों के लिए, कृपया 'बैश', 'पॉवरशेल' या 'क्श' जैसे अधिक विशिष्ट टैग का उपयोग करें। एक विशिष्ट टैग के बिना, एक पोर्टेबल (POSIX- आज्ञाकारी) समाधान ग्रहण किया जाना चाहिए, हालांकि इसके अलावा 'श्लोक' या 'श' का उपयोग करना बेहतर है।
echo "this line # has a hash"
। आपको अपने पैटर्न को लाइन की शुरुआत में एंकर करना होगा। इसके अलावा, बिल्ली का बेकार उपयोग। इसे आजमाएं:sed -e '/^\s*#/d' file1.txt > file2.txt
grep --version
od -c
के माध्यम से चलाने का प्रयास करें यह देखने के लिए कि आपत्तिजनक वर्ण क्या हैं कि[[:space:]]*
रेगेक्स मेल नहीं खाता है।