Linux replace word in file

How to Replace a String in a File in Bash

As a programmer, you might need to work with different types of files to store data temporarily or permanently. Sometimes, you may need to replace part of the file or modify the particular content of the file. To replace content in a file, you must search for the particular file string. The ‘sed’ command is used to replace any string in a file using a bash script. This command can be used in various ways to replace the content of a file in bash. The ‘awk’ command can also be used to replace the string in a file. This tutorial will show you how to replace any string value from a file using a bash script.

Sample Data for Bash String Replacement

A text file named Sales.txt with the following content is created to show the replacement operations.
Sales.txt

01/01/2020 60000 Dhaka
10/02/2020 76000 Rajshahi
21/03/2020 54000 Khulna
15/04/2020 78000 Chandpur
17/05/2020 45000 Bogra
02/06/2020 67000 Comilla

General Syntax for Sed: Replace String in a File

The basic syntax of the `sed` command for replacing the particular string in a file is given below.

Every part of the above syntax is explained below.

‘-i’ option is used to modify the content of the original file with the replacement string if the search string exists in the file.
‘s’ indicates the substitute command.
‘search_string’ contains the string value that will be searched in the file for replacement.
‘replace_string’ contains the string value that will be used to replace the content of the file that matches the ‘search_string’ value.
‘filename’ contains the filename where the search and replace will be applied.

Example 1: Replace File with the ‘sed’ Command

In the following script, the search-and-replace text will be taken from the user. If the search string exists in ‘Sales.txt’, then it will be replaced by the replacement string. Here, a case-sensitive search will be performed.

Читайте также:  Как установить linux на планшет

# Assign the filename
filename = «Sales.txt»

# Take the search string
read -p «Enter the search string: » search

# Take the replace string
read -p «Enter the replace string: » replace

if [ [ $search ! = «» && $replace ! = «» ] ] ; then
sed -i «s/ $search / $replace /» $filename
fi

Example 2: Replace File with the ‘sed’ Command with ‘g’ and ‘i’ Flag

The following script will work like the previous example, but the search string will be searched globally for the ‘g’ flag, and the case-insensitive search will be done for the ‘i’ flag.

# Take the search string
read -p «Enter the search string: » search

# Take the replace string
read -p «Enter the replace string: » replace

if [ [ $search ! = «» && $replace ! = «» ] ] ; then
sed -i «s/ $search / $replace /gi» $1
fi

Example 3: Replace File with `sed` Command and Matching Digit Pattern

The following script will search for all numerical content in a file and will replace the content by adding the ‘$’ symbol at the beginning of the numbers.

# Check the command line argument value exists or not
if [ $1 ! = «» ] ; then
# Search all string containing digits and add $
sed -i ‘s/\b3\\b/$&/g’ $1
fi

Replace String in a File with `awk` Command

The ‘awk’ command is another way to replace the string in a file, but this command cannot update the original file directly like the ‘sed’ command.

Example 4: Replace File with `awk` Command

The following script will store the updated content in the temp.txt file that will be renamed by the original file.

# Check the command line argument value exists or not
if [ $1 ! = «» ] ; then
# Search all string based on date
awk ‘ ‘ $1 > temp.txt && mv temp.txt $1
fi

In the above example `awk` command is used to search for a string “02/06/2020”, which is the last date in our sample file. The matched string will be replaced by a new string “12/06/2020”. The string resulting whether substituted or not is printed on each line.

Example 5: Replace string in file with Pure Bash Scripting

In this example we will do the same job with a Bash while loop and a bash string replacement command. We will write the output to a tmp file and replace the original at the end of the script. See the code below:

# Replace all instances on line of Khulna with Dhaka
echo $

mv / tmp / Sales.o.txt Sales.txt

You can see the echo command will do a replacement in the line variable, as the script reads each line in the text file, and replace all instances of Khulna with the new string Dhaka. The while loop reads from the input file Sales.txt and writes to the output file /tmp/Sales.o.txt. Finally the temporary output file replaces the original file with the mv command.

Читайте также:  Networking programming in linux

Example 6: Replace string in file with Perl one liner

This task is actually super simple with Perl. Perl is an old, less popular language but extremely powerful. This can be done with a line command in the bash command line:

-pi.bak tells perl to process the file in place and also create a backup file with the .bak extension. The replacement will be all instances of Dhaka for Bogra as the new text. Here you can see the easy output of this command:

Conclusion

This article showed you how to use bash scripts to replace strings in a file with search and replace on the command line in bash. There are many ways to do this including with commands sed, awk, perl; you can use native bash scripting with loops and regex and there are more ways even not discussed here. Bash and linux have many ways to do the same job.

About the author

Fahmida Yesmin

I am a trainer of web programming courses. I like to write article or tutorial on various IT topics. I have a YouTube channel where many types of tutorials based on Ubuntu, Windows, Word, Excel, WordPress, Magento, Laravel etc. are published: Tutorials4u Help.

Источник

How to Find and Replace Text, Word, or String in File

If you manage to take a deeper glimpse inside the ecosystem of the Linux operating system environment, you will discover that its built-in commands are sufficient enough to solve most of our computing problems.

One such problem is the need to find and replace text, word, or string in a file especially when you are in a server environment. A solution to this problem lets you handle nagging issues like updating the “/etc/apt/sources.list” file after a successful Linux system upgrade.

Creating the Test Text File in Linux

Create a text file with a name like “test.txt” and populate it with some text, word, or string characters. Let this file be on the same path as your terminal instance.

$ nano test.txt OR $ vi test.txt

Create Text File in Linux

We will be using the cat command to flexible note the changes on our created test file.

View Text File in Linux

Using Sed to Find and Replace Text, Word, or String in a File

The power of this stream editor is in its easiness in accomplishing basic input streams transformation. The sed command offers a quick, easy, and timeless approach in finding and replacing targeted text, words, or string patterns in a file.

Find and Replace the First Occurrences of Text, Word, or String in File

From our created test file, we are going to update all the instances of the word “LinuxShellTips” with the alternative “this site”. The syntax of the sed command we will be using to accomplish this simple task is as follows:

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/' [TARGETED_FILE]

With reference to the above sed command usage and syntax, we can replace our test file’s “LinuxShellTips” term with “this site” term as follows:

$ sed -i 's/LinuxShellTips/this site/' test.txt

We can now use the cat command to preview the above-proposed changes to our test file to note if any substantial edits took place.

Читайте также:  Как удалить tigervnc server linux

Find and Replace Word in Linux Using Sed Command

As you can see, the first two occurrences of the word “LinuxShellTips” have been replaced with the phrase “this site”.

Find and Replace All Occurrences of Text, Word, or String in File

Despite the above command having replaced all the targeted word patterns in our test file, its usage tends to be selective in most circumstances. The command works best for small files because, in big files, only the first few occurrences of a targeted word pattern might benefit from its ‘find and replace’ prowess.

To find and replace all occurrences of a word pattern in any editable file, you should adhere to the following sed command syntax.

$ sed -i 's/[THE_OLD_TERM]/[THE_NEW_TERM]/g' [TARGETED_FILE]

As you have noted, the ‘g’ in the above find & replace command syntax acts as a global variable so that all the global occurrences of a term in a targeted file are considered.

$ sed -i 's/this site/LinuxShellTips/g' test.txt

Find and Replace All Occurrences of Word in File

The above command finds all the global occurrences of the term “this site” and replaces it with the term “LinuxShellTips”.

Using Awk to Find and Replace Text, Word, or String in File

If you are familiar with the awk command-line utility, then you know that its powerful scripting language metrics make it a pro at text processing. Linux system administrators and professional users find this tool effective in data extraction and reporting.

The awk command syntax for a simple find-and-replace operation looks like the following snippet:

$ awk 'THE_OLD_TERM]","[THE_NEW_TERM]"); print>' [TARGETED_FILE]

In the above syntax, awk will substitute THE_OLD_TERM from THE_NEW_TERM in the TARGETED_FILE and print the resulting file content on the system terminal.

Let us take a practical approach:

Find and Replace Word in Linux Using Awk Command

With the dynamic functionalities of both sed and awk command tools, you should now find, replace, and overwrite text, word, or string patterns in a targeted file. These tools give a system user the needed flexibility while on a command-line interface.

Источник

Оцените статью
Adblock
detector