#!/bin/sh fill_sign() { local sign="$1" echo "$2" | grep -E -- "$sign[[:space:]]*[0-9.]+?" | sed -E "s|.*$sign[[:space:]]*([0-9.]+?).*|\1|" } l="soupsieve >1.2; python_version>='3.0'" fill_sign ">" "soupsieve >1.2; python_version>='3.0'" fill_sign ">" "soupsieve >1.2" fill_sign ">" "soupsieve >1.2 " fill_sign ">" "soupsieve >1.2 t" fill_sign ">" "soupsieve >1.2t" fill_sign ">=" "soupsieve >=1.2" fill_sign ">" "soupsieve > 1.2" fill_sign ">" "soupsieve >1.2; p>" echo "---" l="$(echo "$l" | sed -e "s| *;.*||")" fill_sign ">" "$l" echo test() { l="$1" local t="$(echo "$l" | sed -E -e "s|[[:space:]]*[<>=!]+.*||" -e "s|[[:space:]]*#.*||")" #local t="$(echo "$l" | sed -E -e "s|[[:space:]]*==.*||" -e "s|[[:space:]]*#.*||")" echo "$t" } test "$l" test "testfixtures==6.14.0"