Précédent   Forum des professionnels en informatique > Systèmes > Linux > Applications > Shell
Shell Vos questions sur l'utilisation des commandes shell
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/12/2011, 11h48   #1
Invité de passage
 
Inscription : décembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 9
Points : 0
Points : 0
Par défaut problème d'expression régulière

Bonjour,
je voudrais supprimer toutes les occurrences de caractères spéciaux dans mon fichier blabla, cela marche bien lorsqu'il s'agit de point d'exclamation :
Code :
1
2
3
4
5
while cat blabla | grep -E ".*!.*" 1>/dev/null
do
	sed 's/!//' blabla>truc
	cat truc>blabla
done
Hors lorsque je veux supprimer les points par exemple ou bien les parenthèses, cela ne fonctionne pas, la commande pense que je donnes une expression régulière.
kandro est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 29/12/2011, 11h51   #2
Expert Confirmé Sénior
 
Avatar de frp31
 
Homme francois
Ingénieur systèmes et réseaux
Inscription : juillet 2006
Messages : 3 538
Détails du profil
Informations personnelles :
Nom : Homme francois
Âge : 35
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur systèmes et réseaux
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : juillet 2006
Messages : 3 538
Points : 7 754
Points : 7 754
la boucle ne sert à rien
puisque sed lira ligne à ligne le fichier source, et alimentera le fichier destination

que veux tu faire réellement exemple avant/après est nécessaire
frp31 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/12/2011, 12h08   #3
Invité de passage
 
Inscription : décembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 9
Points : 0
Points : 0
J'ai ceci :

Code :
1
2
3
kandro@linux:~$ cat blabla
blabla...
blabla!!!
Lorsque je fais uniquement le sed j'obtiens :

Code :
1
2
3
kandro@linux$ sed 's/!//' blabla
blabla...
blabla!!
Mais quand j'execute le script de mon premier post j'obtiens:

Code :
1
2
3
kandro@linux:~$ cat blabla
blabla...
blabla
kandro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 12h13   #4
Expert Confirmé
 
Inscription : janvier 2011
Messages : 970
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : janvier 2011
Messages : 970
Points : 2 871
Points : 2 871
Salut,

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
$ cat blabla 
blabla...
blabla!!!
 
$ sed 's/!//g' blabla 
blabla...
blabla
 
$ sed 's/\.//g' blabla 
blabla
blabla!!!
 
$
__________________
$ man woman
Il n'y a pas de page de manuel pour woman.
zipe31 est actuellement connecté   Envoyer un message privé Réponse avec citation 20
Vieux 29/12/2011, 12h14   #5
Invité de passage
 
Inscription : décembre 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : décembre 2011
Messages : 9
Points : 0
Points : 0
Merci, tu m'enlève une épine du pieds !
kandro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 16h18   #6
Membre confirmé
 
Inscription : avril 2008
Messages : 188
Détails du profil
Informations forums :
Inscription : avril 2008
Messages : 188
Points : 222
Points : 222
Citation:
Envoyé par kandro Voir le message
Bonjour,
je voudrais supprimer toutes les occurrences de caractères spéciaux dans mon fichier blabla, cela marche bien lorsqu'il s'agit de point d'exclamation :
Code :
1
2
3
4
5
while cat blabla | grep -E ".*!.*" 1>/dev/null
do
	sed 's/!//' blabla>truc
	cat truc>blabla
done
Hors lorsque je veux supprimer les points par exemple ou bien les parenthèses, cela ne fonctionne pas, la commande pense que je donnes une expression régulière.
Pour supprimer tous les caractères qui t'embêtent, tu peux les mettre entre crochets (et avec le "g"):
Code :
    sed 's/[!.()]//g' blabla>truc
HTH
)jack(
PS: "Hors" veut dire "dehors"... Or, je crois que tu voulais dire "or"...
jack-ft est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h08.


 
 
 
 
Partenaires

Hébergement Web