I want to remove all empty lines from a file. Even if the line contains spaces or tabs it should also be removed.
grep for non-blanks:
grep '[^[:blank:]]' < file.in > file.out
[:blank:], inside character ranges (
[...]), is called a POSIX character class. There are a few like
[:blank:] matches horizontal white space (in the POSIX locale, that's space and tab, but in other locales there could be more, like all the Unicode horizontal spacing characters in UTF8 locales) while
[[:space:]] matches horizontal and vertical white space characters (same as
[:blank:] plus things like vertical tab, form feed...).
Would return the lines that contain any of the characters,
k. Character classes are only recognised within
[...] negates the set. So
[^[:blank:]] means any character but the blank ones.
Here is an
$ awk NF file
NF only set on non-blank lines. When this condition match,
awk default action that is
sed -e 's/^[[:blank:]]*$//' source_file > newfile
sed -e '/^[[:blank:]]*$/d' source_file > newfile
For each line, substitute:
- if it starts ("
- with spaces or tabs ("
[[:blank:]]") zero or more times ("
- and then is the end of the line ("
More info on ::blank:: and other special characters at http://www.zytrax.com/tech/web/regex.htm#special
You can use
sed command for removing blank lines:
sed '/^$/d' in > out
This command deletes all empty lines from the file "in"
Looks like I've found one not that fast, but funny at last:
| xargs -L1
Use the following command:
grep '\S' FILE
which removes all lines including spaces or tabs.
Otherwise, removal not including lines with spaces/tabs, use:
grep . FILE
$ printf "line1\n\nline2\n \nline3\n" > FILE $ cat -v FILE line1 line2 line3 $ grep '\S' FILE line1 line2 line3 $ grep . FILE line1 line2 line3
- Removal including space/tab lines: How to remove empty/blank lines in a file in Unix?
sed: Delete empty lines using sed
awk: Remove blank lines using awk