Cómo comprobar si una cadena contiene varias cartas en determinados índices

Yo de nuevo un poco de ayuda con la comprobación de la cadena si contiene varias cartas específicas a ciertos índices.

if [[ $letter == "${line:$index:1}" ]]; then
   loop_string $cnt $word $line
fi

La razón por la que necesita este es porque me bucle a través de un archivo y verificación para las cadenas de coincidencia de mis parámetros. (No importa de la función en el medio)

Así que si dar una: -p 1 k cambiar esto significa que debe contener la letra k en el índice 1, el problema es que si un dar múltiples-p parámetros de ex. -p 1 k -p 2 s

Cualquier consejo sería de gran ayuda :D

Ejemplo: si se ejecuta una secuencia de comandos con swithes: -p 0 b -p 2 r ... debe bucle a través de un archivo que busca cadenas que coincidan con los parámetros, que en este caso la palabra que han dado las letras en los índices de

Así que si ejecuto ./script.sh -p 0 b -p 2 r pájaro se busca a través de las permutaciones de la palabra de aves en un archivo y echos si la palabra que coincide con los parámetros

1 Respuestas

  • philolegein
    4 de mayo de 2019

    Esto funciona en bash (aunque no necesariamente si usted está buscando para los caracteres especiales, en cuyo caso tendrías que hacer un poco más de magia alrededor de escape):

    #!/bin/bash
    while [ "$1" != "" ]; do
            case $1 in
                -p )        shift
                            let index=$1-1
                            shift
                            findme=$1
                            egrep ^.{$index}[$findme] /path/to/my/file.txt
                            ;;
                * )         echo "I don't unerstand"
                            exit 1
            esac
            shift
    done
    

    $1 es el primer argumento para el comando. shift cop que fuera de la pila. Ver aquí para una buena introducción a bash parámetros posicionales.