The UNIX and Linux Forums  


Go Back   Les systèmes UNIX et Linux Forums > Top Forums > De programmation et de script Shell
.
google unix.com



De programmation et de script Shell Posez vos questions à propos de KSH, CSH, SH, BASH, PERL, PHP, SED, awk et d'autres scripts shell et les langages de script shell ici.

Plus d'UNIX et Linux Forum Sujets Vous trouverez peut-être utile
Fil Thread Starter Forum Réponses Last Post
Supprimer le dossier qui a des caractères spéciaux datherriault UNIX pour les nuls Questions et réponses 12 01-14-2009 05:53 PM
supprimer les caractères spéciaux et unicode shantanuo UNIX pour les nuls Questions et réponses 1 12-05-2008 09:16 AM
Suppression de durée à partir d'une chaîne de caractères chriss_58 De programmation et de script Shell 6 11-28-2008 06:07 AM
Aide à la recherche et de remplacement w / chaîne de caractères contenant des caractères spéciaux CAGIRL UNIX pour les nuls Questions et réponses 4 10-07-2008 08:13 PM
Ajouter la chaîne après l'autre chaîne de caractères avec des caractères spéciaux heliode De programmation et de script Shell 2 03-21-2008 08:06 AM

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 Recherche sur ce Thread Rate Thread Modes d'affichage
  #1 (permalink)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Registered User
  
 

Date d'inscription: novembre 2008
Lieu: divers
Messages: 188
Question Supprimer les caractères spéciaux de la chaîne

Salut,
J'aimerais écrire un script qui supprime tout jeu de caractères à partir d'une chaîne de caractères. Le premier argument serait la chaîne, le second argument serait les caractères à supprimer. Par exemple:

Code:
$ myscript "My name's Santiago. What's yours?" "atu"
My nme's Snigo. Wh's yors?

J'ai écrit le code suivant:

Code:
$ cat myscript
ans=$1
for (( i=0; i<${#2}; i++ )); do
    ans=${ans//${2:$i:1}/}
done
echo "$ans"

Mais il ne fonctionne pas avec les caractères spéciaux suivants: #% *? \
Yat-il un moyen plus simple de faire cela?
Comment puis-je faire fonctionner avec tous les personnages?

Merci d'avance
Santiago
  #2 (permalink)  
Old 12-04-2008
Wolfclaw Wolfclaw is offline
Registered User
  
 

Date d'inscription: août 2008
Messages: 5
Essayez de passer les caractères spéciaux avec un \ devant.
D'autre part, pourquoi ne pas simplement utiliser des expressions régulières avec sed ou perl etc?
  #3 (permalink)  
Old 12-04-2008
Franklin52 Franklin52 is offline Forum Staff  
Modérateur
  
 

Join Date: Feb 2007
Posts: 4,342
Ou tout simplement avec tr. Vérifiez l'option-d à la page de manuel.

Observe
  #4 (permalink)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Registered User
  
 

Date d'inscription: novembre 2008
Lieu: divers
Messages: 188
Citation:
Posté par Franklin52 View Post
Ou tout simplement avec tr. Vérifiez l'option-d à la page de manuel.
Super! Le seul personnage qui ne travaillent pas est backslah mais ici ma nouvelle solution:

Code:
~$ cat myscript
echo "$1" | tr -d "${2//\\/\\\\}"
~$ myscript 'weird string !"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' ' !"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~'
            <---------------------- $1 ----------------------> <---------------- $2 ---------------->
weirdstring
~$

Merci beaucoup
  #5 (permalink)  
Old 07-05-2009
summer_cherry summer_cherry is offline Forum Advisor  
Registered User
  
 

Date d'inscription: juin 2007
Lieu: Beijing Chine
Posts: 1,092

Code:
echo "My name's Santiago. What's yours?" | tr -d "atu"

  #6 (permalink)  
Old 12-04-2008
chebarbudo's Avatar
chebarbudo chebarbudo is offline
Registered User
  
 

Date d'inscription: novembre 2008
Lieu: divers
Messages: 188
Citation:
Posté par Wolfclaw View Post
Essayez de passer les caractères spéciaux avec un \ devant.
D'autre part, pourquoi ne pas simplement utiliser des expressions régulières avec sed ou perl etc?
C'est exactement ce que je demandais! Je suis sûr qu'il ya un moyen plus simple de faire cela ... Mais comment?
Je ne peux pas passer les caractères spéciaux avec une barre parce que mon script lit le deuxième argument de caractère par caractère. Donc, si $ 2 est "\ #", le script va d'abord tenter de remplacer les \ (et il ne parvient pas), puis essayer de remplacer # (et il n'est pas trop).
Toute autre idée?
  #7 (permalink)  
Old 12-04-2008
Wolfclaw Wolfclaw is offline
Registered User
  
 

Date d'inscription: août 2008
Messages: 5
pour une raison quelconque de ses groupes de travail avec des guillemets simples dans les arguments de ligne de commande. Je ne sais pas pourquoi il en est bien de hausser les épaules * *
Reply

Bookmarks

Tags
shell script, shell scripting, str, scripts unix, unix scripts de base

Thread Tools Recherche sur ce Thread
Recherche sur ce Thread:

Recherche avancée
Modes d'affichage Rate this thread
Rate this thread:

Règles de messages
Tu mai pas de nouvelles discussions: nonoui
Tu mai pas envoyer des réponses:
Tu mai pas envoyer des pièces jointes
Tu mai pas modifier vos messages

BB code est Sur
Smilies sont Sur
[IMG] code est Sur
Le code HTML est Hors tension
Trackbacks sont Sur
Pingbacks sont Sur
Refbacks sont Sur




Toutes les heures sont au format GMT -4. Le temps est maintenant 03:56 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Traductions Langue Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Les systèmes UNIX et Linux Forums Content Copyright © 1993-2009. Tous droits Reserved.Ad de gestion par RedTyger

Content Relevant URLs par vBSEO 3.2.0