What GNU/Linux command-line tool would I use for performing a search and replace on a file?

Ben Lever picture Ben Lever · Oct 1, 2008 · Viewed 20k times · Source

What GNU/Linux command-line tool would I use for performing a search and replace on a file?

Can the search text, and replacement, be specified in a regex format?

Answer

Cristian Ciupitu picture Cristian Ciupitu · Oct 1, 2008
sed 's/a.*b/xyz/g;' old_file > new_file

GNU sed (which you probably have) is even more versatile:

sed -r --in-place 's/a(.*)b/x\1y/g;' your_file

Here is a brief explanation of those options:

-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if extension supplied)

-r, --regexp-extended use extended regular expressions in the script.

The FreeBSD version also supports these options. The NetBSD and OpenBSD versions support only -r.

If you want to learn more about sed, Cori has suggested this tutorial.