git grep で検索して置換
git grep
は便利なのだが、置換の機能がない。ぐぐるとsed
と組み合わせて置換する方法がたくさんでてくる。スクリプトファイルに書き込んだのでメモしておく。
- POSIX準拠の正規表現を使える。
- 第2引数(置換後の文字列)ではマッチグループを参照できる。(
"\1にマッチした"
のように書く)
#!/bin/bash
if [ $# -ne 2 ]; then
echo "Arity mismatch. want: 2, actual: $#" 1>&2
exit 1
fi
git grep -lE "$1" | xargs sed -i -E "s/$1/$2/g"
個人メモ:~/.local/bin
に置いてある。