потому что соответствие более 6 не дает вам информацию.

у знать, повторяется ли строка 6 или более раз, используя оператор = ~.

a="aaaaaaazxc2"
if [[ $a =~ ([a-z])\1{5,} ]];
then
     echo "repeated characters"
fi

Код выше не работает.

 Charles Duffy12 сент. 2017 г., 16:55
Видетьen.wikibooks.org/wiki/Regular_Expressions/..., или жеpubs.opengroup.org/onlinepubs/9699919799/basedefs/... для формальной спецификации. Возможность, которую вы хотите, просто недоступна.
 Charles Duffy12 сент. 2017 г., 16:54
Так ты хочешь\1 быть обратной ссылкой? Это расширение PCRE, недоступное в POSIX ERE.
 MvrGeh12 сент. 2017 г., 16:55
Да, если я используюegrep '([a-z])\1{5,}' file, оно работает.

Ответы на вопрос(3)

[[ $var =~ $regex ]] анализирует регулярное выражение в синтаксисе POSIX ERE.

Видетьстандарт регулярных выражений POSIXАкцент добавлен:

BACKREF - Применимо только к основным регулярным выражениям, Строка символов, состоящая из символа, за которым следует однозначное число от «1» до «9».

Обратные ссылки формально не определены стандартом POSIX для ERE; таким образом, они не гарантированы быть доступными (с учетом специфичных для платформы расширений libc) в собственном синтаксисе регулярных выражений bash, что требует использования внешних инструментов (awk, grep и т. д.).

чая повторения одного символа. Вы можете просто создать регулярное выражение, которое будет проверять повторение каждой строчной буквы

regex="a{6}"
for x in {b..z} ; do regex="$regex|$x{6}" ; done    
if [[ "$a" =~ ($regex) ]] ; then echo "repeated characters" ; fi

Регулярное выражение, построенное с указанным выше циклом for, выглядит так:

> echo "$regex" | fold -w60
a{6}|b{6}|c{6}|d{6}|e{6}|f{6}|g{6}|h{6}|i{6}|j{6}|k{6}|l{6}|
m{6}|n{6}|o{6}|p{6}|q{6}|r{6}|s{6}|t{6}|u{6}|v{6}|w{6}|x{6}|
y{6}|z{6}

Это регулярное выражение ведет себя так, как вы ожидаете

> if [[ "abcdefghijkl" =~ ($regex) ]] ; then \
  echo "repeated characters" ; else echo "no repeat detected" ; fi
no repeat detected
> if [[ "aabbbbbbbbbcc" =~ ($regex) ]] ; then \
  echo "repeated characters" ; else echo "no repeat detected" ; fi
repeated characters

обновленный после комментария от @sln заменил связанный{6,} выражение с простым{6}.

 sln12 сент. 2017 г., 17:52
Вам не нужноБольше часть, просто{6} потому что соответствие более 6 не дает вам информацию.
Решение Вопроса

ERE не поддерживает обратные ссылки в регулярных выражениях.ksh93 а такжеzsh поддержи это хотя.

Как альтернативное решение, вы можете сделать это с помощьюрасширенное регулярное выражение вариант вgrep:

a="aaaaaaazxc2"
grep -qE '([a-zA-Z])\1{5}' <<< "$a" && echo "repeated characters"

repeated characters

РЕДАКТИРОВАТЬ: Некоторые реализации ERE поддерживают обратную ссылку как расширение. НапримерUbuntu 14.04 поддерживает это. Смотрите фрагмент ниже:

$> echo $BASH_VERSION
4.3.11(1)-release

$> a="aaaaaaazxc2"
$> re='([a-z])\1{5}'
$> [[ $a =~ $re ]] && echo "repeated characters"
repeated characters
gt; echo $BASH_VERSION 4.3.11(1)-release
$> echo $BASH_VERSION
4.3.11(1)-release

$> a="aaaaaaazxc2"
$> re='([a-z])\1{5}'
$> [[ $a =~ $re ]] && echo "repeated characters"
repeated characters
gt; a="aaaaaaazxc2"
$> echo $BASH_VERSION
4.3.11(1)-release

$> a="aaaaaaazxc2"
$> re='([a-z])\1{5}'
$> [[ $a =~ $re ]] && echo "repeated characters"
repeated characters
gt; re='([a-z])\1{5}'
$> echo $BASH_VERSION
4.3.11(1)-release

$> a="aaaaaaazxc2"
$> re='([a-z])\1{5}'
$> [[ $a =~ $re ]] && echo "repeated characters"
repeated characters
gt; [[ $a =~ $re ]] && echo "repeated characters" repeated characters
 Charles Duffy12 сент. 2017 г., 17:16
Скорее на libc в Ubuntu. Это означает, что вы не зависите даже от конкретной сборки bash (работая везде, где одна и та же версия компилируется с теми же параметрами), ноплатформа, на которой он работает, Это настолько непереносимо, насколько это возможно.
 anubhava12 сент. 2017 г., 17:16
Да, конечно, это зависит от используемой ОС libc
 Charles Duffy12 сент. 2017 г., 16:57
ОП уже знает это - см. Комментарии к вопросу.
 anubhava12 сент. 2017 г., 17:14
Я узнал, что обратная ссылка поддерживается в Ubuntu.
 anubhava12 сент. 2017 г., 16:59
о, просто прочитайте их, не упоминалось в вопросе.

Ваш ответ на вопрос