How can I replace multiple empty lines with a single empty line in bash?
Solution 1:
For BSD-derived systems (including GNU):
You just need cat
with the -s
option which causes it to remove repeated empty lines from its output:
cat -s
From man page: -s --squeeze-blank: suppress repeated empty output lines.
Solution 2:
I just solved this problem by sed
. Even if this is a 7 year old question, someone may find this helpful, so I am writing my solution by sed
here:
sed 'N;/^\n$/D;P;D;'
Solution 3:
grep -A1 . <yourfile> | grep -v "^--$"
This grep solution works assuming you want the following:
Input
line1
line2
line3
line4
line5
Output
line1
line2
line3
line4
line5