コードソースから次のパターンを検索する簡単なスクリプトがあります。prgrep
#!/usr/bin/bash
grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"
(実際にはエイリアスや関数ではなくスクリプトです。vim
どのシェルでも内部で呼び出すことができるようにしたいからです。)
検索は大文字と小文字を区別せず(私の考えではこれは良い基本検索だと思います)、スクリプトはgrep
許可されているすべてのフラグを受け入れます。
スクリプト呼び出し元がスクリプトのフラグを無視できるようにgrep
フラグが必要ですが、これは提供されません。--no-ignore-case
-i
GNU grep
そのような機能を提供する簡単なアイデアはありますか?現在、Prgrep
大文字と小文字を区別する検索を実行する別のスクリプトがあります。
編集する
最新バージョンのGNU grep
doは--no-ignore-case
私に必要なオプションを提供します。私が使用していますGNU grep 3.1
が、まだこのオプションはありません。
答え1
新しいバージョンには、以下を含むgrep
オプションがあります。--no-ignore-case
-i
- 大文字と小文字を無視しないでください。
パターンと入力データの大文字と小文字の違いを無視しないでください。これがデフォルト設定です。このオプションは、-iを使用して効果をキャンセルしたシェルスクリプトに渡すのに役立ちます。両方のオプションが互いに上書きされるためです。
以前のバージョンでは、grep
スクリプトにオプションとして追加するだけです。
#!/usr/bin/bash
if [ "$1" = "--no-ignore-case" ]; then
shift
grep -rnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"
else
grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"
fi
注:--no-ignore-case
これはスクリプトを呼び出すときに最初のパラメータとして必要です。