如何检查字符串是否在特定索引处包含多个字母

时间:2019-05-04 09:25:22

标签: bash shell sh

我提供了一些新的帮助来检查字符串是否在某些索引处包含多个特定字母。

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

我需要这个的原因是因为我遍历文件并检查与我的参数匹配的字符串。 (不要介意中间的功能)

因此,如果给定a:-p 1 k开关,这意味着它应该在索引1处包含字母k。 问题是如果给定多个-p参数ex。 -p 1 k -p 2 s

任何建议都会有所帮助:D

示例:如果我运行带有swithes的脚本:-p 0 b -p 2 r ...它应该在文件中循环查找与参数匹配的字符串,在这种情况下,单词在给定索引处具有字母

所以如果我运行./script.sh -p 0 b -p 2 r bird 它会搜索文件中单词bird的排列并回显单词是否与参数匹配

1 个答案:

答案 0 :(得分:0)

这在bash中有效(尽管如果您要搜索特殊字符,则不一定如此,在这种情况下,您必须对转义进行更多的魔术处理):

#!/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是命令的第一个参数。 shift将其弹出堆栈。请参阅here,了解bash位置参数的良好介绍。