Skip to content

Instantly share code, notes, and snippets.

@ahmu83
Last active July 22, 2024 20:04
Show Gist options
  • Save ahmu83/47a9efa03f8197c3ff6e2f6964d97ac4 to your computer and use it in GitHub Desktop.
Save ahmu83/47a9efa03f8197c3ff6e2f6964d97ac4 to your computer and use it in GitHub Desktop.
A Bash script designed to automate the search and replacement of strings in SQL files (or any large text file)
#!/bin/bash
# USAGE:
# bash bulk-search-replace.sh dbfile.sql
# OR
# chmod +x bulk-search-replace.sh
# ./bulk-search-replace.sh dbfile.sql
#
# Update the search_replace array with the
# strings to search and replace before running the script
# Check if a file name is provided as an argument
if [ "$#" -ne 1 ]; then
echo "Usage: $0 <filename>"
exit 1
fi
# Assign the file name to a variable
FILE=$1
# Check if the file exists
if [ ! -f "$FILE" ]; then
echo "Error: File does not exist."
exit 1
fi
# Declare parallel arrays for search and replace terms
search=(
"wp_qi36dq_"
"https://www.mywebsite.com/media"
"https://www.mywebsite.com"
)
replace=(
"wp_v5vkmv_18_"
"https://mywebsite.wp.test.com/wp-content/uploads/sites/18"
"https://mywebsite.wp.test.com"
)
# Determine whether to use GNU sed or BSD sed
SED_CMD="sed -i"
if [[ "$(uname)" == "Darwin" ]]; then
SED_CMD="sed -i ''"
fi
# Loop through the arrays
for i in "${!search[@]}"; do
# Use sed to replace each string, with '|' as the delimiter
$SED_CMD "s|${search[i]}|${replace[i]}|g" "$FILE"
done
echo "Replacement done."
@ahmu83
Copy link
Author

ahmu83 commented May 20, 2024

A Bash script designed to automate the search and replacement of strings in SQL files (or any large text file). This script efficiently processes a specified file, utilizing parallel arrays to define multiple replacements.

It’s particularly useful for database migrations or bulk updates, ensuring consistency across database dumps.

The script leverages the sed command-line tool for efficient text processing.

Usage Instructions:

Update the search & replace arrays with parallel search and replace values. Once updated, run the script using the two options below.

sh bulk-search-replace.sh dbfile.sql

OR

chmod +x bulk-search-replace.sh
./bulk-search-replace.sh dbfile.sql

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment