regexbusyboxash

How to match regexp with ash?


Following code works for bash but now i need it for busybox ash , which apparrently does not have "=~"

keyword="^Cookie: (.*)$"
if [[ $line =~ $keyword ]]
then
bla bla
fi

Is there a suitable replacement ?

Sorry if this is SuperUser question, could not decide.

Edit: There is also no grep,sed,awk etc. I need pure ash.


Solution

  • For this particular regex you might get away with a parameter expansion hack:

    if [ "$line" = "Cookie: ${line#Cookie: }" ]; then
        echo a
    fi
    

    Or a pattern matching notation + case hack:

    case "$line" in
        "Cookie: "*)
            echo a
        ;;
        *)
        ;;
    esac
    

    However those solutions are strictly less powerful than regexes because they have no real Kleene star * (only .*) and you should really get some more powerful tools (a real programming language like Python?) installed on that system or you will suffer.