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.