How Do I Replace A Text String In Many Files At Once?

The replace command is a string-replacement utility. It changes strings in place in files or on the standard input. This command uses a finite state machine to match longer strings first. It can be used to swap strings. This command is similar to the Perl -pie syntax or sed (stream editor) command.

Please note that the replace command is part of is MySQL database system. If you don’t have MySQL installed, you don’t have replace command.

Syntax

replace OLD-STRING NEW-STRING < INPUT-FILE > OUTPUT-FILE

Examples

To replace all occurrences of word UNIX with Linux, enter:
$ replace UNIX Linux newfile

The replace command can be used in a pipeline, run:
$ cat /etc/passwd | replace : '|'

You can skip the cat command, enter:
$ replace : '|' < /etc/passwd

It also supports few special characters in string replacement:

  • \^ : Match start of line.
  • $ : Match end of line.

How Do I Update All *.txt Files At Once?

You use bash for loop as follows:

#!/bin/bash
for f in /path/to/*.txt
do
   replace UNIX Linux < "$f" > "$f.new"
done

The replace command does not understand regular expression. To use regular expression try the sed command or Perl.

Sed Command Example

To replace all occurrences of word UNIX with Linux using the sed command, enter:

sed 's/UNIX/Linux/g' < input.file > output.file

OR

sed -i 's/UNIX/Linux/g' input.file

OR use bash shell for loop as follows to update all *.doc files at once:

#!/bin/bash
for f in /path/to/*.doc
do
   sed -i  's/UNIX/Linux/g' "$f"
done

Updated for accuracy!

🐧 If you liked this page, please support my work on Patreon or with a donation.
🐧 Get the latest tutorials on SysAdmin, Linux/Unix, Open Source & DevOps topics via:
CategoryList of Unix and Linux commands
File Managementcat
FirewallAlpine Awall CentOS 8 OpenSUSE RHEL 8 Ubuntu 16.04 Ubuntu 18.04 Ubuntu 20.04
Network Utilitiesdig host ip nmap
OpenVPNCentOS 7 CentOS 8 Debian 10 Debian 8/9 Ubuntu 18.04 Ubuntu 20.04
Package Managerapk apt
Processes Managementbg chroot cron disown fg jobs killall kill pidof pstree pwdx time
Searchinggrep whereis which
User Informationgroups id lastcomm last lid/libuser-lid logname members users whoami who w
WireGuard VPNAlpine CentOS 8 Debian 10 Firewall Ubuntu 20.04
21 comments… add one
  • asdds Jun 17, 2013 @ 13:11

    Thanks!

Leave a Reply

Your email address will not be published. Required fields are marked *

Use HTML <pre>...</pre>, <code>...</code> and <kbd>...</kbd> for code samples.