GNU/Linux >> Linux の 問題 >  >> Linux

「git sed」または同等のものはありますか?

これは、Noufal と claytontstanley のものを組み合わせて、変更されないファイルに触れないようにするソリューションです。

[alias]~/.gitconfig のブロック ファイル:

psed = !sh -c 'git grep --null --full-name --name-only --perl-regexp -e \"$1\" | xargs -0 perl -i -p -e \"s/$1/$2/g\"' -

使用するには:

git psed old_method_name new_method_name

Noufal と Greg の投稿に感謝します。私はそれらのソリューションを組み合わせて、git grep を使用するものを見つけました (たとえば、サブモジュールフォルダーではなく、実際の src コードを含むファイルのみをリストしているように見えるため、レポの git ls-files よりも堅牢です)。古いメソッド名と新しいメソッド名を 1 か所に:

[alias]~/.gitconfig のブロック ファイル:

sed = ! git grep -z --full-name -l '.' | xargs -0 sed -i -e

使用するには:

git sed 's/old-method-name/new-method-name/ig'

git ls-files を使用できます xargs と組み合わせて そして sed :

git ls-files -z | xargs -0 sed -i -e 's/old-method-name/new-method-name/g'

を行うことができます
for i in $(git grep --full-name -l old_method_name)
do
 perl -p -i -e 's/old_method_name/new_method_name/g' $i
done

それをファイルのどこかに貼り付けて、 git sed としてエイリアスします あなたの設定で。

更新: 以下の tchrist によるコメントは、perl が繰り返しスポーンするのを防ぐため、より優れた解決策です。


Linux
  1. 再帰的なMkdir?

  2. Nトップに相当しますが、ネットワークI / Oの場合は?

  3. SedでBlackslashをエスケープしますか?

  1. inet_aton に相当する Windows

  2. OS Xで同等のfallocate()コマンド?

  3. Mac アプリケーションを実行するためのワインに相当するものはありますか?

  1. Gitオートコンプリート?

  2. プログラマーのメモ帳またはメモ帳++に相当するLinuxはありますか

  3. /etc/hosts に相当するユーザー固有のものはありますか?