Skip to content

Instantly share code, notes, and snippets.

@joscha
Forked from Mikhael-Danilov/subs.sh
Created June 11, 2013 17:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joscha/5759000 to your computer and use it in GitHub Desktop.
Save joscha/5759000 to your computer and use it in GitHub Desktop.
#!/bin/bash
if [ -z "$1" -o -z "$2" ]; then
echo "Usage: substitue FROM_STRING TO_STRING [OPTION]..."
echo
echo "Replace all occurances of FROM_STRING (a sed-compatible regular"
echo "expression) with TO_STRING in all files for which ack matches"
echo "FROM_STRING."
echo
echo "Any additional options are passed directly to ack (e.g.,"
echo " --type=html would only run the substitution on html files)."
exit 1
fi
# Escape forward slashes for sed
FROM_STRING=${1//\//\\/}
TO_STRING=${2//\//\\/}
shift 2
ack -l --print0 "$@" "$FROM_STRING" | xargs -0 -n 1 sed -i -e "s/$FROM_STRING/$TO_STRING/g"
@joscha
Copy link
Author

joscha commented Jun 11, 2013

Fixed line 16 & 17 to escape all occurences of / not only the first one

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