FILE
:
hello
world
foo
bar
मैं इसमें सभी खाली नई लाइनें कैसे निकाल सकता हूं FILE
?
कमांड का आउटपुट:
FILE
:
hello
world
foo
bar
FILE
:
hello
world
foo
bar
मैं इसमें सभी खाली नई लाइनें कैसे निकाल सकता हूं FILE
?
कमांड का आउटपुट:
FILE
:
hello
world
foo
bar
जवाबों:
grep . FILE
(और अगर आप वास्तव में इसे में sed तो करना चाहते हैं: sed -e /^$/d FILE
)
(और क्या तुम सच में awk में यह तो ऐसा करने के लिए, चाहते हैं: awk /./ FILE
)
sed -ne/./p
भी काम करता है, और awk /./
कम है (कार्रवाई {print}
यदि अनिर्दिष्ट है) @ ghostdog74: grep '[^[:space:]]'
फिर।
.
एक नियमित अभिव्यक्ति है जो न्यूलाइन को छोड़कर किसी भी चरित्र से मेल खाती है।
grep . FILE
दिए गए उदाहरण के साथ काम करता है, लेकिन जरूरी नहीं कि जब फ़ाइल में बाइट्स हो, तो वह चारसेट का हिस्सा न हो। उदाहरण के लिए, GNU grep 2.20 के साथ, printf "\x80\n" | grep .
आउटपुट कुछ नहीं करता है।
निम्नलिखित का प्रयास करें:
grep -v -e '^$'
grep -v -e '^$'
हमेशा काम करता है, जो कि मामला नहीं है grep .
। उदाहरण के लिए, जीएनयू जीआरपी २.२० के साथ, गैर-खाली लाइन printf "\x80\n" | grep .
को printf "\x80\n" | grep -v '^$'
आउटपुट करते हुए, कुछ भी आउटपुट नहीं करता है।
with awk, just check for number of fields. no need regex
$ more file
hello
world
foo
bar
$ awk 'NF' file
hello
world
foo
bar
awk1line.txt
- फिर फिर से, इसलिए सबसे
यहां एक समाधान है जो उन सभी लाइनों को हटा देता है जो या तो रिक्त हैं या जिनमें केवल अंतरिक्ष वर्ण हैं:
grep -v '^[[:space:]]*$' foo.txt
इसे इस्तेमाल करे: sed -i '/^[ \t]*$/d' file-name
यह सभी रिक्त लाइनों को हटा देगा जिसमें कोई भी नहीं होगा। फ़ाइल में सफेद स्थान (स्थान या टैब) अर्थात (0 या अधिक)।
नोट: वर्ग ब्रैकेट के अंदर 't' के बाद 'स्पेस' है।
संशोधक -i
अपडेट की गई सामग्री को फ़ाइल में वापस लिखने के लिए बाध्य करेगा। इस ध्वज के बिना आप देख सकते हैं कि स्क्रीन पर खाली लाइनें हटा दी गईं लेकिन वास्तविक फ़ाइल प्रभावित नहीं होगी।
grep '^..' my_file
उदाहरण
THIS
IS
THE
FILE
EOF_MYFILE
यह आउटपुट के रूप में केवल कम से कम 2 वर्णों के साथ लाइनें देता है।
THIS
IS
THE
FILE
EOF_MYFILE
grep '^' my_file
आउटपुट के साथ परिणाम भी देखें
THIS
IS
THE
FILE
EOF_MYFILE
और grep '^.' my_file
आउटपुट के साथ भी
THIS
IS
THE
FILE
EOF_MYFILE
यदि खाली लाइनों को हटाने का अर्थ है किसी भी स्थान सहित लाइनें, उपयोग करें:
grep '\S' FILE
उदाहरण के लिए:
$ printf "line1\n\nline2\n \nline3\n\t\nline4\n" > FILE
$ cat -v FILE
line1
line2
line3
line4
$ grep '\S' FILE
line1
line2
line3
line4
$ grep . FILE
line1
line2
line3
line4
यह सभी देखें:
पर्ल ओवरकिल हो सकता है, लेकिन यह भी काम करता है।
सभी लाइनों को हटाता है जो पूरी तरह से खाली हैं:
perl -ne 'print if /./' file
उन सभी पंक्तियों को हटा देता है जो पूरी तरह से रिक्त हैं, या केवल व्हॉट्सएप हैं:
perl -ne 'print if ! /^\s*$/' file
भिन्नता जो मूल को संपादित करती है और एक .bak फ़ाइल बनाती है:
perl -i.bak -ne 'print if ! /^\s*$/' file
यदि आप जानना चाहते हैं कि कोड की कुल पंक्तियाँ आपके Xcode प्रोजेक्ट में क्या हैं और आप प्रत्येक स्विफ्ट फ़ाइल की गिनती को सूचीबद्ध करने में रुचि नहीं रखते हैं तो यह आपको उत्तर देगा। यह बिना किसी कोड के लाइनों को हटाता है और उन पंक्तियों को हटाता है जो टिप्पणी के साथ उपसर्ग करती हैं//
इसे अपने Xcode प्रोजेक्ट के रूट स्तर पर चलाएं।
find . \( -iname \*.swift \) -exec grep -v '^[[:space:]]*$' \+ | grep -v -e '//' | wc -l
आप अपने कोड में टिप्पणी ब्लॉक के साथ शुरुआत है, तो /*
और के साथ समाप्त होने */
जैसे:
/*
This is an comment block
*/
फिर ये गिनती में शामिल हो जाएंगे। (बहुत कठिन)।
सरलतम उत्तर -----------------------------------------
[root@node1 ~]# cat /etc/sudoers | grep -v -e ^# -e ^$
Defaults !visiblepw
Defaults always_set_home
Defaults match_group_by_gid
Defaults always_query_group_plugin
Defaults env_reset
Defaults env_keep = "COLORS DISPLAY HOSTNAME HISTSIZE KDEDIR LS_COLORS"
Defaults env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
root ALL=(ALL) ALL
%wheel ALL=(ALL) ALL
[root@node1 ~]#