How to Join Multiple Lines Into One on Linux

When working with Linux or any command-line interface, you may come across situations where you need to combine multiple lines of text into a single line. This can be helpful for formatting or readability purposes, and it can also be necessary for certain scripting tasks.

In this article, we will discuss several methods for joining multiple lines into one on Linux, including use of command-line tools like sed, awk, and paste. We will provide examples of each method to demonstrate how they can be used in different situations.

Method 1: Using "tr" Command

One of the simplest ways to join multiple lines into one is to use the tr command. This command is used to translate or delete characters, and it can also be used to replace line breaks with spaces. Here's how it works

cat file.txt | tr '<br>' ' '

In this example, we're using the cat command to display contents of a file called "file.txt", and then piping that output to the tr command. The first argument to tr is the character we want to replace, which in this case is the newline character (
). The second argument is the character we want to replace it with, which in this case is a space. This will join all lines in the file into a single line.

You can also use the tr command to remove line breaks altogether by omitting the second argument

cat file.txt | tr -d '<br>'

This will remove all line breaks from the output and combine all lines into a single line.

Method 2: Using "sed" Command

The sed command is another powerful tool for working with text files on Linux. It can be used to manipulate text in a variety of ways, including joining multiple lines into one. Here's an example

sed ':a;N;$!ba;s/<br>/ /g' file.txt

This command uses a regular expression to replace all line breaks in the file with spaces. The regular expression consists of several parts

  • :a;N;$!ba; is a loop that reads in all lines in the file and joins them into a single pattern space.

  • s/
    / /g
    is a substitution command that replaces all instances of the newline character with a space.

The result is a single line of text that includes all lines in the file.

Method 3: Using "awk" Command

The awk command is a versatile tool for working with text files on Linux. It can be used for a wide range of tasks, including joining multiple lines into one. Here's how it works

awk '{printf("%s ",$0)}' file.txt

In this example, we're using the printf function in awk to print each line in the file followed by a space. The %s format specifier tells awk to print each line as a string followed by a space, and the $0 argument specifies that we want to print the entire line.

The result is a single line of text that includes all lines in the file, separated by spaces.

Method 4: Using "paste" Command

The paste command is primarily used to merge lines from two or more files, but it can also be used to join multiple lines from a single file. Here's how it works

paste -s -d ' ' file.txt

The -s option tells paste to merge all lines in the file into a single line, and the -d ' ' option specifies that we want to use a space as the delimiter between lines. If you want to use a different delimiter, you can replace the space character with any other character or string.

Method 5: Using "xargs" Command

The xargs command is often used to pass arguments to other commands, but it can also be used to join multiple lines into one. Here's an example

cat file.txt | xargs

In this example, we're piping the output of the cat command to xargs. The xargs command reads in each line of input and uses it as an argument for the command that follows. In this case, we're not specifying a command to follow, so xargs simply combines all lines into a single line separated by spaces.

Method 6: Using "echo" Command

Finally, you can also use the echo command to join multiple lines into one. Here's how it works

echo $(cat file.txt)

In this example, we're using command substitution to pass the output of cat as an argument to echo. The $() syntax tells the shell to execute the command inside parentheses and use its output as an argument to echo. This will combine all lines in the file into a single line separated by spaces.

Comparison of Methods

Method Command Delimiter Best Use Case
tr tr '
' ' '
Customizable Simple replacement tasks
sed sed ':a;N;$!ba;s/
/ /g'
Space (default) Complex text processing
awk awk '{printf("%s ",$0)}' Customizable Field-based processing
paste paste -s -d ' ' Highly customizable Multi-file operations
xargs xargs Space (default) Command argument preparation
echo echo $(cat file.txt) Space (default) Quick shell operations

Additional Considerations

Handling Special Characters

When dealing with files containing special characters like tabs or carriage returns, you may need to preprocess the data

sed 's/\r//g' file.txt | tr '<br>' ' '

This removes carriage return characters before joining lines.

Working with Multiple Files

The paste command excels at joining lines from multiple files

paste file1.txt file2.txt | tr '\t' ' '

This joins corresponding lines from two files and replaces tabs with spaces.

Conclusion

Linux provides multiple methods for joining multiple lines into one, each with its own strengths. The tr command offers simplicity, while sed and awk provide advanced text processing capabilities. Choose the method that best fits your specific requirements and complexity needs.

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

12K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements