diffを使用して2つのgrepコマンドの出力の違いを見つける

diffを使用して2つのgrepコマンドの出力の違いを見つける

diff2つのgrepコマンドを出力することは可能ですか?

現在、さまざまな除外パターンを使用してファイルを検索していますが、出力はかなり長いため、新しいパターンが機能するかどうか、または出力が同じままであるかどうかを確認したいと思いました。

grep何らかの方法で 2 つのコマンドをパイプしたりすることは可能ですかdiff?

grep --exclude=*{.dll, pdb} --ril "dql"
grep  --ril "dql"

答え1

使用 急いで:

diff <(grep pattern file) <(grep another_pattern file)

プロセス置換:<(command)または>(command)FIFOまたは/dev/fd/*エントリに置き換えられます。基本的には名前付きパイプを設定するための省略形です。http://mywiki.wooledge.org/ProcessSubstitution
例:diff -u <(sort file1) <(sort file2)

それで :

diff <(grep --exclude=*{.dll, pdb} --ril "dql") <(grep  --ril "dql")

答え2

bash使用にあたってプロセス置換:

$ echo a > FILE
$ echo b > FILE1
$ diff <(grep a *) <(grep b *)
1c1
< FILE:a
---
> FILE1:b

次のように説明されていますman bash:

   Process Substitution
   Process substitution is supported on systems that support named
   pipes (FIFOs) or the /dev/fd method of naming open files.  It
   takes the form of <(list) or >(list).  The process list is run
   with its input or output connected to a FIFO or some file in
   /dev/fd.  The name of this file is passed as an argument to the
   current command as the result of the expansion.  If the >(list)
   form is used, writing to the file will provide input for list.
   If the <(list) form is used, the file passed as an argument
   should be read to obtain the output of list.

   When available, process substitution is performed
   simultaneously with parameter and variable expansion,
   command substitution, and arithmetic expansion.

関連情報