캐터링 파일 및 grep 배관의 장점


19

편의성 외에도 파일을 정리하여 grep으로 파이프하는 추가 이점이 있습니까? 편의상, 내 기록에서 아래 명령과 같은 명령을 검색하면 커서가 줄의 끝에 있으므로 동일한 텍스트에 대해 grep하기 위해 다른 텍스트로 명령을 쉽게 수정할 수 있습니다.

따라서 다음과 같은 규칙에 다른 이점이있을 수 있습니다.

cat /var/tmp/trace.2043925204.xt | grep -in profile
cat /var/tmp/trace.2043925204.xt | grep -n Profile-Main

대신에:

grep -in profile /var/tmp/trace.2043925204.xt 
grep -n Profile-Main /var/tmp/trace.2043925204.xt 

답변:


21

고양이를 피하는 것이 좋습니다. 행 편집이 중요한 경우 다음과 같이 작성하십시오.

$ < filename grep pattern

Cat을 통해 모든 데이터를 푸시하는 데 메모리와 CPU 리소스가 필요하기 때문입니다. 경로 재 지정 stdin 대신 인수로 파일 이름을 전달하는 또 다른 이점은 파일에 mmap () 옵션을 명령에 허용한다는 것입니다.


9

나는 아무도 "고양이의 쓸모없는 사용"참조하지 않았다 믿을 수 없어 http://www.smallo.ruhr.de/award.html 아직

한 가지 의심스러운 장점이 있습니다. 파이프 라인이 길면 고양이와 조금 더 직교합니다.

cat file | command1 | command 2 | command3

모든 명령을 함께 클러스터합니다.

물론 다른 사람들이 말했듯이 (그리고 나는합니다)

< file command1 | command2 | command3

거의 같은 것을 수행합니다. 즉, 고양이는 매우 작으며 실제로 필요하지 않을 때 사용하면 컴퓨터가 다운되지 않습니다.

일반적으로 catvs를 직접 적중하면 파일이 변경되지 않지만, 여러 파일이 인수와 같은 인수가 있는지와 같은 특정 명령에는 차이가 있습니다 (예 :) grep. 지목 사항:

cat file1 file2 | grep SOMETHING

와 다른 출력을 가질 것이다

grep SOMETHING file1 file2

출력에 일치하는 파일 이름이 있습니다. 파일 이름을 원하지 않는 경우가 있으며를 사용하면 유리 cat합니다.


1
cat보다 읽기가 훨씬 명확합니다 <. 아니면 유닉스와 bash가 VMS와 DCL로부터 많은 것을 배울 수 있다고 생각하는 사람들을 위해.
RonJohn

8

이점이 없습니다. 커서를 다음과 같이 구성하면 끝 부분에 커서도 중요하지 않습니다.< inputfile grep -args foo


6

이 상황에서는 고양이를 전혀 사용할 필요가 없습니다. grep과 같은 도구는 파일 이름을 인수로 사용하므로 불필요하고 시간 낭비입니다.

[root@un1xf00 root]# time cat passwd | grep root
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

real    0m0.021s
user    0m0.000s
sys     0m0.030s
[root@un1xf00 root]# time grep root passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin

real    0m0.002s
user    0m0.000s
sys     0m0.000s
[root@un1xf00 root]#

업데이트 : @Andy Lester에게 감사합니다. 이러한 타이밍은 디스크 캐시를 고려하지 않음을 지적합니다. 나는 새로운 것을 배웠다! 그러나 1 분의 1의 절약은 어쨌든 큰 차이를 만들지 않습니다. 나는 고양이를 grep에 넣는 것이 논리적 인 일이 아니라고 생각합니다. 문제를 완벽하게 해결할 수있을 때 다른 사람에게 문제 해결을 요청하는 것과 같습니다.


1
@ 마이클 : 당신에게 -10은 당신을 둔다. 더 도움이 될 수 있습니다. 여기에 계정이 없기 때문에 이것을 볼 수 없습니다.
추후 공지가있을 때까지 일시 중지되었습니다.

4
Michael은 위의 타이밍이 디스크 캐시를 고려하지 않는다고 말합니다. (그리고보다 응답을 드 obtusing 마이클 아래 입맛에 더 많은 관심을 주셔서 데니스에 -0.29)
앤디 레스터

1
의견이 신호를 보내는 것보다 소음이 있어야한다고 생각합니다. Michael이 디스크 캐시를 참조하고 있다는 것을 알지 못했기 때문에 @Andy에게 감사드립니다.
Dexygen

3

편집의 용이성은 유일한 장점이며, 명령 행에서 수행하는 경우 실행 cat및 파이프 수행에 추가 시간이 걸리지 않습니다.

그러나 쉘 스크립트에서 그렇게 할 이유가 없습니다.


2

전혀 이점이 없습니다. 명령 수정에 대해 걱정하는 대신 단축키와 단축키를 사용하여 쉘 명령 행을보다 잘 탐색하는 방법을 배우십시오.


1

아니요. 예제에서 약간 느릴 수도 있습니다.

pipecat과 grep 사이에 A 가 작성되며, 파일 이름을 grep에 직접 전달할 때 필요하지 않습니다. 그러나 어떤 상황 에서도이 때문에 처리량 제한을 관찰하지 않을 것이라고 생각합니다.

grep에 대한 파이프 입력의 다른 장점으로는 고급 파일 읽기 기능이있는 유틸리티 사용과 같은 추가 처리가 있습니다. ( 다른 것들 중에서 tee, 참조 zcat).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.