diff를 사용하여 두 grep 명령의 출력에서 ​​차이점을 찾으세요.

diff를 사용하여 두 grep 명령의 출력에서 ​​차이점을 찾으세요.

diff두 개의 명령을 출력하는 것이 가능합니까 grep?

현재 다른 제외 패턴을 사용하여 파일을 검색하고 있는데 출력이 꽤 길어서 새 패턴이 작동하는지, 아니면 출력이 여전히 동일한지 확인하고 싶었습니다.

grep어떻게든 두 명령을 a 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.

관련 정보