grepフラグが大文字と小文字を無視しない

grepフラグが大文字と小文字を無視しない

コードソースから次のパターンを検索する簡単なスクリプトがあります。prgrep

#!/usr/bin/bash
grep -irnI --exclude-dir={.git,obj} --exclude=tags --color=auto "$@"

(実際にはエイリアスや関数ではなくスクリプトです。vimどのシェルでも内部で呼び出すことができるようにしたいからです。)

検索は大文字と小文字を区別せず(私の考えではこれは良い基本検索だと思います)、スクリプトはgrep許可されているすべてのフラグを受け入れます。

スクリプト呼び出し元がスクリプトのフラグを無視できるようにgrepフラグが必要ですが、これは提供されません。--no-ignore-case-iGNU grep

そのような機能を提供する簡単なアイデアはありますか?現在、Prgrep大文字と小文字を区別する検索を実行する別のスクリプトがあります。

編集する
最新バージョンのGNU grepdoは--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これはスクリプトを呼び出すときに最初のパラメータとして必要です。

おすすめ記事