파이프라인에서 여러 패턴을 수집하는 방법

파이프라인에서 여러 패턴을 수집하는 방법

목록에서 세 가지 패턴을 찾고 싶습니다. 타자를 쳐본다

$ pip3 list | grep -ei foo -ei bar -ei baz

하지만 쉘은 a broken pipe error와 큰 것을 던졌습니다 Traceback.

grep로 파이프된 목록에서 전달된 여러 스키마를 처리하는 방법은 무엇입니까 grep?

답변1

노력하다:

pip3 list | grep -Ei 'foo|bar|baz'

내 Arch 서버의 실제 예는 다음과 같습니다.

pip3 list | grep -Ei 'ufw|set'
setuptools 40.0.0 
ufw        0.35   

운영 체제 및 grep정보:

uname -a
Linux archlinux 4.16.6-1-ARCH #1 SMP PREEMPT Mon Apr 30 12:30:03 UTC 2018 x86_64 GNU/Linux

grep --version
grep (GNU grep) 3.1
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Mike Haertel and others, see <http://git.sv.gnu.org/cgit/grep.git/tree/AUTHORS>.

답변2

이유

grep -ei foo -ei bar -ei baz

-e옵션의 의미가 -e PATTERN다음과 같기 때문에 작동하지 않습니다 .

grep -i -e foo -e bar -e baz

...명령어는 다음과 같습니다. 이 -i옵션(대소문자를 구분하지 않는 일치용)은 한 번만 지정하면 되며 모든 패턴에 영향을 미칩니다.

-ei foo파일에서 grep패턴을 찾도록 요청합니다 .ifoo

"깨진 파이프" 오류는 pip3데드 파이프의 끝에 쓰려고 할 때 발생합니다. grep파일 foo또는 bar을 찾을 수 없어서 파이프가 종료 baz되고 종료되었습니다(3개의 "파일을 찾을 수 없음" 오류 발생). 역추적은 pip3Python 프로그램에서 제공됩니다(따라서 Python 코드에서 오류가 발생한 위치를 정확하게 알려줍니다).

관련 정보