I have a file (hosts) with some lines without content, how do I remove that lines without content?
Using sed
Type the following command:
sed '/^$/d' input.txt > output.txt
Using grep
Type the following command:
grep -v '^$' input.txt > output.txt
Many ways:
Use
sed
and edit the file in place.sudo sed -i -rn '/\S/p' /etc/hosts
Same, but with Perl:
sudo perl -i -ne 'print if /\S/' /etc/hosts
Newer versions of GNU
awk
, in place again:sudo awk -i inplace '/\S/' file
All of the above solutions will also remove lines that contain nothing but whitespace. If you only want to remove empty lines, and leave lines that contain spaces or tabs etc, change the /\S/
to /^$/
in all of the above examples.
You can use Vim in Ex mode:
ex -sc v/./d -cx hosts
/./
find non blank linesv
invert selectiond
deletex
save and close