[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: RES: [shell-script] Quebrar strings
From: |
Gilberto Martins |
Subject: |
Re: RES: [shell-script] Quebrar strings |
Date: |
Tue, 22 Jun 2004 15:06:16 -0300 |
Em Ter, 2004-06-22 às 14:20, Fernando Lemes da Silva escreveu:
> Aurelio ou outro sábio da lista,
>
> Poderiam me explicar o que acontece exatamente aqui ? Fiz alguns
> testes e percebi que com as duas barras depois do nome da variavel ele
> avalia o parametro seguinte como grupo de caracteres, com uma barra ele
> analisa como uma string pura, mas nao consegui usar alguma expressao
> regular (ou não tem jeito?)...
Como eu fui beneficiado pelo gesto do Aurélio, sinto-me na obrigação moral de
tentar ajudar.
Manual do Bash:
${parameter/pattern/string}
${parameter//pattern/string}
The pattern is expanded to produce a pattern just as in
pathname
expansion. Parameter is expanded and the longest match
of pat-
tern against its value is replaced with string. In the
first
form, only the first match is replaced. The second form
causes
all matches of pattern to be replaced with string.
Este é apenas um trecho. Vejamos:
# A="teste maior" => Defino a variável A
# echo ${A/e/E} => Substituo o PRIMEIRO "e" por "E" (maiúsculo)
tEste maior
# echo ${A//e/E} => Substituo TODOS os "e" por "E" (maiúsculo)
tEstE maior
> Por exemplo.. queria tirar os dois ultimos caracteres da string
> arquivo="/etc/arquivo.config" usando este tipo de recurso, sem ter que
> apelar para o sed ou cut.. é possivel ?
Não com este recurso, se vc considerar um string qualquer. Mas se eu
considerar este teu exemplo como uma constante, sim.
# arquivo="/etc/config.config" => substitui arquivo por config
# echo ${arquivo//ig} => troca TODOS ig por NADA (del)
/etc/conf.conf
# echo ${arquivo//%ig} => troca o ÚLTIMO(%) ig por NADA
/etc/config.conf
# echo ${arquivo/%ig} => idem.
/etc/config.conf
Note que este símbolo (%) direciona a substituição para a string ao final da
variável
Espero ter sido útil.
[]s
Gilberto Martins <g . martins (at) pobox . com>
[As partes desta mensagem que não continham texto foram removidas]