From 4d5b53aea2ac97796879d1f5a647b96c80d2043d Mon Sep 17 00:00:00 2001 From: spacewander Date: Mon, 16 Dec 2019 22:19:30 +0800 Subject: [PATCH] git-sed: escape special characters for tr Some special patterns like `n-l`, `[:alpha:]` need to be escaped to avoid confusing tr. --- bin/git-sed | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/bin/git-sed b/bin/git-sed index 98a431a..c9137bd 100755 --- a/bin/git-sed +++ b/bin/git-sed @@ -70,7 +70,9 @@ all="$search$replacement$flags" case "$all" in */*) ascii="$(for((i=32;i<=127;i++)) do printf '%b' "\\$(printf '%03o' "$i")"; done)" - sep="$(printf '%s' "$ascii" | tr -d "$all")" + escaped="${all//-/\\-}" + escaped="${escaped//[/\\[}" + sep="$(printf '%s' "$ascii" | tr -d "$escaped")" sep="$(printf %.1s "$sep")" if [ "X$sep" = "X" ] ; then echo 'could not find an unused character for sed separator character'