camscape - for excellent IT solutions itkb.ro - IT knowledge base

bash :: functie bash pentru aflarea pozitiei unui substring intr-un string

Cristian
Cristian M.
TitleFunctie bash pentru aflarea pozitiei unui substring intr-un string
Tagsbash, substring, pozitie
Desc.Functie bash pentru aflarea pozitiei unui substring intr-un string
CodeKBSH0011 v1.0
Date 8 octombrie 2012
Functie bash care intoarce pozitia unui substring intr-un string, sau 0 daca acesta nu este gasit.

Functia este de 10 (zece!) ori mai rapida decat varianta AWK de la KBSH0010 dar aveti nevoie de o versiune bash relativ recenta. Deasemenea, shell-ul folosit trebuie sa fie /bin/bash nu /bin/sh

function StrPos {

    # Function that return substring first position within a string, 0 if not
    # found.
    #
    # The function is 10 times faster than the AWK variant, but needs a recent
    # bash and use of /bin/bash instead of /bin/sh as shell.
    #
    # Param:
    #   - string
    #   - substring to be found
    #
    # Return:
    #   - 0 if not found, substring position if found
    #
    # Copyright CAMSCAPE SERVICES GPLv2
    # http://www.camscape.ro
    #

    STRING=$1
    SUBSTRING=$2

    LEN_STRING=${#STRING}
    LEN_SUBSTRING=${#SUBSTRING}

    TEMP=${STRING#*$SUBSTRING}
    LEN_TEMP=${#TEMP}

    if [ $LEN_TEMP -eq $LEN_STRING ]; then
        POS=0
    else
        POS=$((LEN_STRING-LEN_TEMP-LEN_SUBSTRING+1))
    fi

    echo $POS

}