![정규식을 사용하여 최신 pip 패키지 버전을 얻으세요](https://linux55.com/image/160509/%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%B5%9C%EC%8B%A0%20pip%20%ED%8C%A8%ED%82%A4%EC%A7%80%20%EB%B2%84%EC%A0%84%EC%9D%84%20%EC%96%BB%EC%9C%BC%EC%84%B8%EC%9A%94.png)
최신 패키지 버전을 얻기 위해 이 pip 설치의 출력을 구문 분석하려고 합니다.
pip install package==
ERROR: Could not find a version that satisfies the requirement package== (from versions: 19.2.0, 19.5.0, 19.6.1, 19.7.0, 19.7.1, 19.8.0, 19.9.0)
이는 bash 명령(sed, awk 또는 grep)을 사용하여 수행해야 합니다. 주어진 출력의 모든 버전을 강조 표시하는 regexr.com을 사용하여 다음 표현식의 유효성을 검사하고 있습니다.
(?:(\d+)\.)?(?:(\d+)\.)?(?:(\d+)\.\d+)
하지만 이 정규식을 sed/awk와 함께 사용할 수는 없습니다.
답변1
덜 복잡한 방법으로 최신 버전의 pip를 사용하는 경우 cut
.
Pip show pip | grep Version: | cut -d' ' -f2
결과는 다음과 같습니다.
19.9.0
답변2
GNU만 사용하세요grep그리고폴리 메라 제 연쇠 반응정규식 엔진:
명령줄
pip ... |& grep -oP '.*\b\K\d+\.\d+\.\d+\b'
산출
19.9.0
정규식에 대한 참고 사항
확인하다정규 표현식 101 설명
답변3
$ echo 'ERROR: Could not find a version that satisfies the requirement package== (from versions: 19.2.0, 19.5.0, 19.6.1, 19.7.0, 19.7.1, 19.8.0, 19.9.0)' | \
sed -e 's/^.*versions: //; s/, /\n/g; s/)//' | \
sort -V | tail -n1
19.9.0
-V
이를 위해서는 옵션을 이해 --version-sort
하는 정렬 버전이 필요합니다. 이는 GNU 정렬과 FreeBSD 정렬 모두에 해당됩니다. 다른 사람들도 그렇게 하는지는 모르겠습니다.