Verwenden Sie „diff“, um Unterschiede in der Ausgabe zweier Grep-Befehle zu finden

Verwenden Sie „diff“, um Unterschiede in der Ausgabe zweier Grep-Befehle zu finden

Ist diffdie Ausgabe von zwei grepBefehlen möglich?

Ich suche derzeit nach Dateien, verwende verschiedene Ausschlussmuster und die Ausgabe ist ziemlich lang, deshalb wollte ich sehen, ob mein neues Muster funktioniert oder ob die Ausgabe immer noch dieselbe ist.

Ist es möglich, zwei grepBefehle irgendwie in eins umzuleiten diffoder so etwas in der Art?

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

Antwort1

Verwenden von im Handumdrehen:

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

Prozesssubstitution: <(command)oder >(command)wird durch einen FIFO- oder /dev/fd/*-Eintrag ersetzt. Im Grunde genommen eine Abkürzung für das Einrichten einer benannten Pipe. Siehehttp://mywiki.wooledge.org/ProcessSubstitution.
Beispiel:diff -u <(sort file1) <(sort file2)

Also :

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

Antwort2

Bei bashder VerwendungProzesssubstitution:

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

Wie beschrieben in 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.

verwandte Informationen