Используйте diff для поиска различий в выводе двух команд grep

Используйте diff для поиска различий в выводе двух команд grep

Возможен ли diffвывод двух grepкоманд?

В настоящее время я ищу файлы, используя разные шаблоны исключения, и вывод получается довольно длинным, поэтому я хотел посмотреть, сработает ли мой новый шаблон или вывод останется прежним.

Можно ли как-то объединить две grepкоманды в один 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.

Связанный контент