The UNIX and Linux Forums  
Olá e boas-vindas de Estados Unidos para o UNIX e Linux Forum! Obrigado por visitar e fazer parte da nossa comunidade global.

Go Back   O UNIX e Linux Forum > Top Fóruns > Programação Shell Script e
.
google unix.com



Programação Shell Script e Post perguntas sobre ksh, CSH, SH, BASH, Perl, PHP, SED, Awk e outros scripts shell e shell scripts línguas aqui.

Mais UNIX e Linux Fórum Tópicos Você pode achar Helpfull
Fio Thread Starter Fórum Respostas Última postagem
Remover diretório que tenha caracteres especiais datherriault UNIX para Dummies Perguntas & Respostas 12 01-14-2009 05:53
remover especiais e caracteres unicode shantanuo UNIX para Dummies Perguntas & Respostas 1 12-05-2008 09:16
Remover uma dura seqüência de caracteres chriss_58 Programação Shell Script e 6 11-28-2008 06:07
Ajuda com localizar e substituir w / string contendo caracteres especiais CAGIRL UNIX para Dummies Perguntas & Respostas 4 10-07-2008 08:13
Adicionar seqüência após outra string com caracteres especiais heliode Programação Shell Script e 2 03-21-2008 08:06

Reply
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
Linkback Thread Tools Pesquisar este Thread Rate Thread Display Modes
  #1 (permalink)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Usuário
  
 

Join Date: Nov 2008
Localização: diversos
Lugares: 188
Question Remova os caracteres especiais a partir de string

Oi lá,
Queria escrever um script que remove qualquer conjunto de caracteres de qualquer string. O primeiro argumento seria a corda, o segundo argumento seria para remover os caracteres. Por exemplo:
Código:
$ myscript "My name's Santiago. What's yours?" "atu"
My nme's Snigo. Wh's yors?
Eu escrevi o seguinte código:
Código:
$ cat myscript
ans=$1
for (( i=0; i<${#2}; i++ )); do
    ans=${ans//${2:$i:1}/}
done
echo "$ans"
Mas ele não funciona com os seguintes caracteres especiais: #% *? \
Existe alguma maneira mais simples de fazer isso?
Como posso fazê-lo funcionar com todos os personagens?

Thanks in advance
Santiago
  #2 (permalink)  
Old 12-04-2008
Wolfclaw Wolfclaw is offline
Usuário
  
 

Join Date: Aug 2008
Posts: 5
Tentar passar os caracteres especiais com uma \ na frente.
Por outro lado porque não basta usar as expressões regulares com sed ou perl etc?
  #3 (permalink)  
Old 12-04-2008
Franklin52 Franklin52 is offline Forum Staff  
Moderador
  
 

Join Date: Feb 2007
Mensagens: 4.309
Ou simplesmente com tr. Marque a opção-d na página man.

Atenciosamente
  #4 (permalink)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Usuário
  
 

Join Date: Nov 2008
Localização: diversos
Lugares: 188
Citação:
Originally Posted by Franklin52 View Post
Ou simplesmente com tr. Marque a opção-d na página man.
Ótimo! A única personagem que não trabalham é backslah mas aqui a minha nova solução:
Código:
~$ cat myscript
echo "$1" | tr -d "${2//\\/\\\\}"
~$ myscript 'weird string !"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' ' !"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~'
            <---------------------- $1 ----------------------> <---------------- $2 ---------------->
weirdstring
~$
Thanks a lot
  #5 (permalink)  
Old 07-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Usuário
  
 

Join Date: Jun 2007
Localização: Beijing China
Mensagens: 1.088
Código:
echo "My name's Santiago. What's yours?" | tr -d "atu"
  #6 (permalink)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Usuário
  
 

Join Date: Nov 2008
Localização: diversos
Lugares: 188
Citação:
Originally Posted by Wolfclaw View Post
Tentar passar os caracteres especiais com uma \ na frente.
Por outro lado porque não basta usar as expressões regulares com sed ou perl etc?
Isso é exatamente o que eu estava perguntando! Eu tenho certeza que há uma maneira simples de fazer isso ... Mas como?
Eu não posso passar os caracteres especiais com uma barra, porque o meu script lê o segundo argumento caracter a caracter. Portanto, se $ 2 é "\ #", o script tentará primeiro substituir \ (e não), então tente substituir # (e não muito).
Qualquer outra idéia?
  #7 (permalink)  
Old 12-04-2008
Wolfclaw Wolfclaw is offline
Usuário
  
 

Join Date: Aug 2008
Posts: 5
por alguma razão o seu trabalho com uma única aspas na linha de comando argumentos. Eu não sei porque esta é embora shrugs * *
Reply

Marcadores

Tags
shell script, shell script, str, unix script, unix script básico

Thread Tools Pesquisar este Thread
Pesquisar este Thread:

Pesquisa Avançada
Display Modes Esta taxa Thread
Esta taxa Thread:

Destacamento Regimento
Você não pode postar novas threads
Você não pode postar respostas
Você não pode postar anexos
Você não pode editar suas postagens

BB code é Ligado
Smilies são Ligado
[IMG] código é Ligado
Código HTML é Desligado
Trackbacks são Ligado
Pingbacks são Ligado
Refbacks são Ligado




Todos os horários são GMT -4. A hora é agora 09:46.


Powered by: vBulletinCopyright © 2000 - 2006, Jelsoft Enterprises Limited. Língua Traduções Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
O UNIX e Linux Fóruns Content Copyright © 1993-2009. Todos os Direitos Reserved.Ad Gestão por RedTyger

Content Relevant URLs por vBSEO 3.2.0