There are times when you have a text file with existing content, and you need to append some more text to it. Luckily, there are several Linux commands you can use to do this. Some of these commands are even powerful enough to insert text anywhere in your file.



Create a Text File First!

To follow along with the tutorial, you should have a test file ready where you can append lines and see the result. To create an empty file on Linux, run the below command:

touch <filename>

Replace <filename> with the name of the file. For example, we’re going to name it append.txt. We can create the file with this command:

touch append.txt

Linux terminal display the touch command to create an empty text file

To see the content of the file, run:

cat append.txt

You won’t get any output as currently, there is no content in the file. Now that we have an empty file, we can add some lines to it.

1. Using echo to Append Text to a File

The echo command is mostly used for displaying text on the terminal, but you can also use it to add text to a file. Here’s the basic syntax:

echo [OPTION] [STRING]

To use the echo command for adding lines to a file, you’ll need some help from the redirection operator (>). To add text lines to a file using the echo command, run:

echo "string" > filename

Replace “string” with actual text inside the double quotes. Do the same for “filename.” For example, if you’d like to add the text “This is a file” to append.txt, run:

echo "This is a file" > append.txt

Now if you try to read the file content using the cat command, you should see the line appear in the output.

Linux terminal shows how the echo command is used to add text to a file

However, with a single redirection operator (>), you won’t be able to append lines to the file. If you try to add another line to the above file using the same command, it will override the existing content of the file. Let’s see that in action. Run the below command:

echo "Trying to append a line to the file" > append.txt

Linux terminal showcasing how the echo command can override the content of a text file

So how to overcome this? Simple. To append some text to a file without overriding its content, use another redirection operator (>>), like this:

echo "Trying to append a line to the file" >> append.txt

The Linux terminal shows the use of the echo command to append a line to a text file

This time, the line will get appended to the file, as expected.

2. Using cat to Append Text to a File

The cat command, as we’ve seen previously, displays the content of a file on the terminal. The basic syntax of the command is:

cat [OPTION]... [FILE]...

Unlike the echo command, the cat command can’t directly use any strings as parameters. Instead, you can append the contents of one file to another. To do that, use the command like this:

cat file1 >> file2

Replace “file1” and “file2” with the actual file names. So, in our previous example, we could append the content of another file to the append.txt file using:

cat anotherfile.txt >> append.txt

Linux terminal showing the use of the cat command to combine the contents of different files

Another good way to use the cat command is to concatenate the contents of multiple files into a single file. For that, specify the file names as arguments, like this:

cat file1 file2 file3 >> file4

Say, you have three different text files containing the information of three different employees. You need to combine them into a single file. To do that, run:

cat employee1.txt employee2.txt employee3.txt >> employees.txt

The Linux terminal shows how to use the cat command to combine the contents of several files and append them to another file

3. Using printf to Add Text at the End of a File

You may be familiar with printf if you have experience with the C programming language. But did you know that printf is a Linux tool as well? As the name suggests, it lets you print text or data to the standard output. Here’s the basic syntax:

printf FORMAT [ARGUMENT]...

To append text to a file using printf, run:

printf "Using printf to append text" >> append.txt

The Linux terminal displaying the use of the printf command to append text to a file

However, as you can see, unlike the echo command, there was no new line appended to the text. This means you need to do it manually. You can use the “\n” escape character at the end of your text. So let’s use that now.

printf "Using printf to append text with a new line\n" >> append.txt

The Linux terminal shows how to use a new line character with the printf command

This time, the terminal prompt is at a new line, unlike in the previous case.

4. Using sed

The sed command, short for stream editor, performs basic text transformation on inputs. There are multiple ways to use this command. The basic syntax to append text to files looks something like this:

sed [OPTION] [SCRIPT] [FILE...]

Let’s now see how you can append a line to a file. For that, follow the below command format:

sed -i '$ a\<text to append>' <file name>

Replace the text inside the angle brackets (<>) with the text string, and your file name, respectively. So if you want to append a line at the end of the file, run:

sed -i '$ a Do not feel sed' append.txt

The Linux terminal showing the use of sed command to append a line at the end of a file

The “-i” option tells the system that it will use the file in question to insert the text. The “$” sign means the line will be added at the end of the file. Adding the “a” in front of our text tells the system that we want the line to be appended to the existing content of the file.

One good thing about the sed command is that you can add text anywhere in the file. So, for example, if you want to add something after the fourth line, use the command like this:

sed -i '4 a Appended after the fourth line' append.txt

The Linux terminal demonstrating the sed command used to append a text line at a specific position of a file

This time, the line was added exactly after the fourth line.

5. Using tee to Append Text to a File

The tee command lets you read from standard input and write the output to files. The basic syntax is as follows:

tee [OPTION]... [FILE]...

There are two ways you can append text to a file using the tee command. Either use the “-a” option or the double redirection operator. Let’s take a look at the first method.

tee -a append.txt

After executing the command, you will enter interactive mode. You can write any text and press Enter to append it to the file. Upon doing so, you will see the same text as output on the terminal. To exit the prompt, press Ctrl+D.

The Linux terminal showing the use of the tee command to append a line to a file

In the other method, the terminal won’t repeat the string you type in, making the process much cleaner. Other than that, it works in the same way. Here’s the command:

tee >> append.txt

The Linux terminal showcasing the use of the tee command to append a line to a file

As you can see, when we typed in a string, it wasn’t displayed in the terminal again.

6. Using awk

The awk command is extremely powerful when it comes to text manipulation. With some tweaking, you can add text to files using this command. Here’s the syntax for the command:

awk 'BEGIN{print "Feeling awkward"}' >> append.txt

The Linux terminal displaying how to use the awk command to append a line to a file

In the above example, we used the awk command’s BEGIN rule to print some text and send it to our target file using the redirection operators.

7. Using a Text Editor to Append Text

This one is rather straightforward. If you don’t like using commands or find it difficult to memorize the syntax, then you can simply use any Linux text editor to append lines to a text file. For this tutorial, we’ll use the nano text editor.

To open a file in nano, use the command below:

nano <filename>

The content of a file called append.txt that was opened in the Nano text editor program

Remember to replace <filename> with the path to an actual file in the above command. Once it’s opened in the editor, you can navigate through the text using the arrow keys and type in anything you like using your keyboard.

To append a line, all we need to do is use the down arrow key to go to the bottom of the file. If you need to create a new line, do that by pressing Enter. Then enter any text you want. Finally, save the file using Ctrl+O and exit the editor using Ctrl+X.

How to Redirect the Output of a Command to a File

If you want to save the output of a command to a file, you can do that using the redirection operators (>>). Suppose you run the ls command to get the contents of the present directory. You want to save the list to a file called command.txt. For that, run the below command:

ls >> command.txt

The Linux terminal demonstrating how to save the output of a command to a file using the redirection operators

The same goes for any other Linux command. You write that command, add the redirection operators, and then the file name where you want to save the output.

How to Append Standard Output and Standard Error to a File

Before wrapping up, we want to show you another cool file manipulation trick in Linux. If you want to redirect both standard output and standard error, run:

command >> file.txt 2>&1 

Instead of the “command” field, you need to type in a specific command whose output you want to capture. 1 and 2 are file descriptors for standard output and standard error, respectively. We also use an & sign to indicate that what comes before and after the redirection operator are file descriptors and not file names.

A Better Linux File Manipulation Experience

With this newly equipped knowledge, you can now easily append some text or strings to any file of your choice. Depending on your situation and familiarity with Linux commands, you can choose any of the above methods.

Source link