Remove Blank Lines From a File in Linux

When working with files in Linux, it is common to encounter files that contain blank lines. These blank lines can make it difficult to read the file, especially when dealing with large files. In this article, we will explore different methods to remove blank lines from a file in Linux using various command-line tools.

Why Remove Blank Lines from a File?

There are several reasons why you may want to remove blank lines from a file. First, it makes the file easier to read, especially when dealing with large files. Second, it can help reduce file size, which can be beneficial when transferring or storing files. Finally, removing blank lines can be important when dealing with scripts or programs that expect specific input formats.

Methods to Remove Blank Lines from a File

There are several methods that you can use to remove blank lines from a file in Linux. In this section, we will discuss the most common and effective methods.

Method 1: Using sed Command

The sed command is a powerful stream editor that can be used to perform various text manipulation tasks, including removing blank lines from a file. Here's the syntax to remove blank lines from a file using the sed command

sed '/^$/d' inputfile > outputfile

In the above command, the sed command searches for lines that start and end with nothing (blank lines). The '/^$/d' pattern tells sed to delete those lines. The ^ represents the beginning of a line, $ represents the end of a line, and d is the delete command.

Example

Let's say we have a file named sample.txt that contains the following content

This is first line.

This is second line.

This is fourth line.

To remove blank lines from this file using the sed command, we can run the following command

sed '/^$/d' sample.txt > output.txt

This command will create a new file named output.txt that contains the following content

This is first line.
This is second line.
This is fourth line.

Method 2: Using grep Command

The grep command is another powerful text search and filtering tool that can be used to remove blank lines from a file. Here's the syntax to remove blank lines using the grep command

grep -v '^$' inputfile > outputfile

In the above command, the -v option tells grep to invert the match, selecting all lines that do not match the given pattern. The '^$' pattern matches empty lines (lines that start and end with nothing).

Example

Using the same sample.txt file, we can remove blank lines with the following command

grep -v '^$' sample.txt > output.txt

Method 3: Using awk Command

The awk command is a versatile text processing tool that can be used to remove blank lines from a file. Here's the syntax

awk '!/^$/' inputfile > outputfile

In the above command, the ! symbol negates the pattern that follows it. The /^$/ pattern matches blank lines, so !/^$/ matches all non-blank lines.

Example

To remove blank lines from sample.txt using the awk command

awk '!/^$/' sample.txt > output.txt

Method 4: Using tr Command

The tr command is a simple text manipulation tool that can be used to squeeze multiple consecutive newlines into single newlines. Here's the syntax

tr -s '<br>' < inputfile > outputfile

In the above command, the -s option tells tr to squeeze multiple consecutive newline characters into a single newline. This effectively removes blank lines that consist of multiple newlines.

Example

To remove blank lines from sample.txt using the tr command

tr -s '<br>' < sample.txt > output.txt

Method 5: Using Perl Command

Perl provides a powerful one-liner approach to remove blank lines. Here's the syntax

perl -ne 'print if /\S/' inputfile > outputfile

In the above command, -ne options tell Perl to loop through each line of the input file and execute the code that follows. The print if /\S/ command tells Perl to print the line only if it contains any non-whitespace character (\S).

Example

To remove blank lines from sample.txt using Perl

perl -ne 'print if /\S/' sample.txt > output.txt

Comparison of Methods

Method Command Best For Performance
sed sed '/^$/d' Simple blank line removal Fast
grep grep -v '^$' Pattern-based filtering Fast
awk awk '!/^$/' Complex text processing Moderate
tr tr -s '
'
Squeezing multiple newlines Fast
Perl perl -ne 'print if /\S/' Advanced pattern matching Moderate

Conclusion

Linux provides multiple powerful command-line tools to remove blank lines from files. The sed and grep methods are generally the fastest and most straightforward approaches. Choose the method that works best for your specific needs and file processing requirements.

Updated on: 2026-03-17T09:01:38+05:30

15K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements