Unix grep에서 여러 입력을 사용할 수 있습니까? 이것이 내가 하고 싶은 일이다:
pip freeze
설치된 모든 Python 패키지를 나열하지만 불행히도 해당 패키지의 종속성도 나열합니다.
cat requirements/base.txt
내 프로젝트 패키지 나열
pip freeze | grep $(cat requirements/base.txt)
나는 성공하지 못한 채 비슷한 것을 사용하려고 노력해 왔습니다 .
내가 관심 있는 패키지만 실제로 나열하기 위해 pip 동결을 필터링하는 방법을 아는 사람이 있습니까?
답변1
명령을 실행하려면 명령 대체 주위에 큰따옴표를 넣으십시오. 예를 들어 다음 base.txt
파일을 고려해보세요.
$ cat base.txt
simplegeneric==0.8.1
six==1.10.0
sympy==1.1
따옴표가 없으면 명령은 일련의 오류를 생성합니다. 따옴표를 사용하면 잘 작동합니다.
$ pip3 freeze | grep "$(cat base.txt)"
simplegeneric==0.8.1
six==1.10.0
sympy==1.1
더 좋은 점은 정규식 구문에 익숙하지 않은 경우 grep이 각 줄을 일반 문자열로 -F
해석하도록 이 옵션을 사용하는 것이 더 안전할 것입니다 . base.txt
여기서는 아무런 차이가 없지만 앞으로의 놀라움을 피하는 데 도움이 될 수 있습니다.
$ pip3 freeze | grep -F "$(cat base.txt)"
simplegeneric==0.8.1
six==1.10.0
sympy==1.1
그래도 더 좋습니다(모자 팁:나시르 라일리-f
), 다음을 사용하지 않고 파일에서 문자열을 읽으려면 이 옵션을 사용하십시오 cat
.
$ pip3 freeze | grep -Ff base.txt
simplegeneric==0.8.1
six==1.10.0
sympy==1.1