grep検索の出力を別のgrepの入力にリンクしようとしています。たとえば、
grep search_query * | grep -v but_not_this
ただし、2 番目の grep は前の検索の出力を使用しません。 2番目のgrepは代わりに*を使用しているようです。例えば、
grep lcov *
tst/bits/Module.mk:21:$(call func_report_lcov)
tst/drivers/Module.mk:27:$(call func_report_lcov)
ただし、「call」を含む結果をフィルタリングするには
grep lcov * | grep -v call
...
私をつかんで私のワークスペースのすべての行「電話」は含まれません。
環境情報:
- これはbashとFishの両方で起こります。
- 以下のようにgrepコマンドのエイリアスを設定しました。
alias grep='grep -nR --color=always'
私が逃した他のものはありますか?
ベストアンサー1
エイリアシングがその理由です。でman grep
この-R
オプションを使用すると、grep
「各ディレクトリの下のすべてのファイルを繰り返し読み込みます」。したがって、パイプの次の部分は最初の出力を無視し、grep
代わりにgrep
現在のディレクトリ内のすべてのファイルを繰り返し繰り返します。
エイリアスをバイパスし、バニラ grep と\grep
。
grep lcov * | \grep -v call
しかし、個人的に-R
別名を入力するのは混乱していると思います。