2012-12-20 16 views
6

मुझे फ़ाइल से खाली लाइनों को हटाने की आवश्यकता है (केवल रिक्त स्थान के साथ - शून्य रिकॉर्ड नहीं)।फ़ाइल से खाली लाइनें हटाएं

निम्न आदेश काम करता है केवल अशक्त पंक्तियों के लिए, लेकिन नहीं रिक्त स्थान के मामले में:

sed '/^$/d' filename

यह ग्रेप का उपयोग किया जा सकता है?

sed -i '/^\s*$/d' file 

संपादित करें::

regex ^\s*$ मैचों

sed '/^\s*$/d' file 

परिवर्तन वापस फ़ाइल में सहेजने के लिए -i विकल्प का उपयोग:

+0

यहाँ की जांच: http: //theunixshell.blogspot.com/2013/01/deleting-empty-lines-from -file.html – Vijay

उत्तर

12

उपयोग केवल रिक्त स्थान युक्त रिक्त लाइनों के लिए \s* एक पंक्ति जिसमें केवल व्हाइटस्पेस, grep -v प्रिंट लाइनें होती हैं जो किसी दिए गए पैटर्न से मेल नहीं खाती हैं निम्नलिखित सभी कोई भी काले लाइनों प्रिंट होगा:

grep -v '^\s*$' file 
+0

यह thanxx काम करता है ........ –

+0

यदि आप जानते हैं कि रिक्त रेखाओं में सफेद जगह नहीं है, तो आप उस grep को 'grep' को कम कर सकते हैं। file'। –

+1

बस पूर्णता के लिए: 'awk' एनएफ 'फ़ाइल' –

0

यह हुआ है कि फ़ाइल Windows मशीन एक sed कमान (sed '/^$/डी' foo) सही ढंग से नहीं चल रहा था से नकल किया गया था।

मैंने निम्नलिखित आदेश चलाया और यह काम किया।

$ dos2unix foo

1
sed -i '/^[ \t]*$/d' file-name 

यह किसी भी नहीं होने सभी रिक्त लाइनों को हटा देंगे। सफेद रिक्त स्थान (रिक्त स्थान या टैब) यानी (0 या अधिक) फ़ाइल में ..

टिप्पणी की: वहाँ एक 'अंतरिक्ष' वर्ग कोष्ठक के अंदर '\ t' के बाद है ...

"-i "फाइल में अद्यतन सामग्री को वापस लिखने के लिए मजबूर होगा ... इस ध्वज के बिना आप स्क्रीन पर खाली लाइनों को हटा सकते हैं लेकिन वास्तविक फ़ाइल प्रभावित नहीं होगी।

1

POSIX इस

sed -i '/^[[:blank:]]*$/d' file 

या

है ऐसा करने के लिए पोर्टेबल रास्ता
grep -v '^[[:blank:]]*$' file 
संबंधित मुद्दे