A menos que você assuma um shell específico, não há melhor maneira de fazer isso do que “pipe echo to tool” (ou apenas uma “ferramenta” como expr ); é tudo o que você pode realmente contar com o shell Bourne tradicional e / ou o Shell POSIX . Se você considerar outros shells, existem outras possibilidades embutidas.
ksh tem
- padrões extras:
?(pattern-list)
,*(pattern-list)
,{n}(pattern-list)
,{n,m}(pattern-list)
,@(pattern-list)
,!(pattern-list)
; - o especificador
%P
printf para converter uma expressão regular estendida em um padrão (e%R
para expressão regular estendida para padrão); - a condição
expr == pattern
em[[ expr ]]
tests; - a expansão do parâmetro
${param/pattern/replacement}
.
bash tem
- a opção
extglob
para ativar a maioria dos padrões extras de ksh (sem{n}
e{n,m}
); - a condição
expr == pattern
(em[[ expr ]]
tests); - a expansão do parâmetro
${param/pattern/replacement}
; - (em versões mais recentes) a condição
expr =~ extregexp
(em[[ expr ]]
tests) que pode corresponder às expressões regulares estendidas- com subexpressões entre parênteses e o parâmetro
BASH_REMATCH
, substituições no estilo sed poderiam ser feitas.
- com subexpressões entre parênteses e o parâmetro
zsh tem
- seus próprios padrões estendidos com a opção
EXTENDED_GLOB
; -
ksh - como padrões estendidos com a opção
KSH_GLOB
- a condição
expr == pattern
(em[[ expr ]]
tests); - a expansão do parâmetro
${pattern/pattern/replacement}
; - a condição
expr =~ extregexp
(em[[ expr ]]
tests) que pode corresponder às expressões regulares estendidas,- ele pode usar PCRE em vez de expressões regulares estendidas simples se a opção RE_MATCH_PCRE estiver definida,
- com subexpressões entre parênteses, o parâmetro
MATCH
e o parâmetromatch
(ouBASH_REMATCH
com o conjunto de opçõesBASH_REMATCH
), substituições no estilo sed poderiam ser feitas;
- o módulo
zsh/pcre
que oferece os comandospcre_compile
,pcre_study
epcre_match
e a condição-pcre-match
teste (em[[ expr ]]
testes); - o módulo
zsh/regex
que oferece a condição-regex-match
teste (em[[ expr ]]
testes).