Wie um zu überprüfen, ob ein string enthält mehrere Briefe, die an bestimmte Indizes

Ich neue Hilfe bei der überprüfung der Zeichenfolge, wenn es enthält mehrere bestimmte Buchstaben in einer bestimmten Indizes.

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

Der Grund, ich brauche dies, weil ich eine Schleife durch eine Datei und prüfen Sie die strings passend zu meiner Parameter. (Nicht Sinn der Funktion in der Mitte)

Also, wenn Sie einen geben: -p 1 k wechseln, dass bedeutet, es sollte enthalten Buchstaben k auf index 1, das problem ist, wenn einer mehrere -p Parameter ex. -p 1 E -p 2 s

Jede Beratung wäre hilfreich :D

Beispiel: wenn ich ein Skript ausführen, mit Swithes bekommen: -p 0 b -p 2 r ... es sollte eine Schleife durch eine Datei nach Zeichenketten suchen, die passenden Parameter, in diesem Fall word, die Buchstaben zu bestimmten Indizes

Also, wenn ich laufen ./script.sh -p 0 b -p 2 r Vogel es sucht durch Permutationen des Wortes, den Vogel in eine Datei und echos, wenn das Wort entspricht dem Parameter

1 Antworten

  • philolegein
    4. Mai 2019

    Dies funktioniert in der bash (obwohl nicht notwendigerweise, wenn Sie sind auf der Suche nach Sonderzeichen, in dem Fall würden Sie ein wenig mehr Magie, um die Flucht):

    #!/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 ist das erste argument für den Befehl. shift pops, die aus dem Stapel. Siehe hier für eine gute Einführung in die bash-positional-Parameter.