Search code examples
regexlinuxsedgnu

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


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?


Solution

  • 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, NetBSD and OpenBSD versions also supports these options.

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