文字列から文字を削除する2番目のインスタンス

文字列から文字を削除する2番目のインスタンス

私が使用しているgitコマンドをより便利にしようとしています。私がする一般的な作業は、これを行うためにgrep私がgit rev-list --all書いた(他のStackExchangeの答えを切り取り、貼り付けるとも呼ばれます)、gitコマンドを使用することです。

~/bin/git-search:

!/bin/bash
function _search() {
    git rev-list --all | (
        while read revision; do
            git grep -F $1 $revision
        done
    )
}
_search $1

出力は次のとおりです。

f26ce56cf6b17401292c494f906b2b6a9071ca75:filename.py:grepped string

私は通常、これらの結果をgit showコミットとファイルパスで実行して、ファイルの特定のバージョンを確認します。git show入力が許可されました{COMMIT HASH}:path/to/file

:理想的には、私のgit関数が2番目の関数を持つスペースを貼り付けて、出力をより簡単にコピーして貼り付けることができるようにしたいと思いますgit-searchgit show例:

f26ce56cf6b17401292c494f906b2b6a9071ca75:filename.py grepped string

すでにBASHを使用しているので、BASHを使いたいです。私の最初の解決策はPythonを使用することでしたが、これは私にとって不要なようです。 BASHでこれを実装する最良の方法はわかりません。

ベストアンサー1

sed 's/:/ /2'

これにより、2 番目の:文字が空白に変わります。

関数パイプラインで追加の手順でこれを実行できます。

#!/bin/sh

git rev-list --all |
while read revision; do
    git grep -F "$1" "$revision"
done |
sed 's/:/ /2'

(実際には必要ないように見えたので、その関数を削除しました。変数拡張への参照も参照してください。ああ、そして特定の機能を使用しないのでスクリプトです(不要な/bin/shキーワードを除いbashfunctionあなたの機能も同じです))

おすすめ記事