Referências anteriores não são permitidas aqui. Você precisa escrever a expressão que descreverá todos os casos possíveis, por exemplo:
2[[:digit:]]\{1\}\|3[[:digit:]]\{2\}\|4[[:digit:]]\{3\}\|5[[:digit:]]\{4\}
Aqui está o comando:
grep '\(2\)[[:digit:]]\{\}' numbers
O que eu quero é combinar exatamente 2 dígitos após o dígito "2", 3 dígitos se eu alterar o dígito "2" para "3" na minha expressão, 4 dígitos se ...
Estou usando referência reversa aqui, mas quando executo este comando, tenho a seguinte saída:
grep: invalid content of \{\}
Como alguém pode mudar minha expressão?
primeira solução: Como a serge respondeu:
2[[:digit:]]\{1\}\|3[[:digit:]]\{2\}\|4[[:digit:]]\{3\}\|5[[:digit:]]\{4\}
Isso pode realmente funcionar, mas suponha que eu tenha \(34\)
como a primeira sub-expressão, gostaria de voltar a referenciar esse número para não ter que implementar os 34 casos (ou mais).
Referências anteriores não são permitidas aqui. Você precisa escrever a expressão que descreverá todos os casos possíveis, por exemplo:
2[[:digit:]]\{1\}\|3[[:digit:]]\{2\}\|4[[:digit:]]\{3\}\|5[[:digit:]]\{4\}
Parece que você pretende codificar o primeiro valor em vez de determiná-lo a partir do primeiro dígito real da linha. Considere algo assim:
HOWMUCH=2 grep "\($HOWMUCH\)[[:digit:]]\{$HOWMUCH\}" numbers
Tags grep regular-expression