É possível diff
a saída de dois grep
comandos?
No momento, estou procurando por arquivos, usando diferentes padrões de exclusão, e a saída é bastante longa, então queria ver se meu novo padrão funcionava ou se a saída ainda é a mesma.
É possível de alguma forma canalizar dois grep
comandos em um diff
ou algo parecido?
grep --exclude=*{.dll, pdb} --ril "dql"
grep --ril "dql"
Responder1
Usandofesta no vôo:
diff <(grep pattern file) <(grep another_pattern file)
Substituição de processo:
<(command)
ou>(command)
é substituído por uma entrada FIFO ou /dev/fd/*. Basicamente uma abreviação para configurar um pipe nomeado. Verhttp://mywiki.wooledge.org/ProcessSubstitution.
Exemplo:diff -u <(sort file1) <(sort file2)
Então :
diff <(grep --exclude=*{.dll, pdb} --ril "dql") <(grep --ril "dql")
Responder2
Em bash
usosubstituição de processo:
$ echo a > FILE
$ echo b > FILE1
$ diff <(grep a *) <(grep b *)
1c1
< FILE:a
---
> FILE1:b
Conforme descrito em 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.