Suppression chaine de caractère

Résolu/Fermé
bkrqpzef Messages postés 197 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 13 juillet 2011 - 30 oct. 2008 à 17:55
bkrqpzef Messages postés 197 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 13 juillet 2011 - 30 oct. 2008 à 20:14
Bonjour,
J'ai un petit fichier txt que je voudrai modifier. Il est de la forme :
.maison=bateau
.avion=chateau
etc ...

J'aimerai transformer ça en supprimant tout ce qui suit le "=". c'est à dire :
.maison=
.avion=
etc ...

Bon sur le papier ça n'est pas très compliqué, le problème c'est que la liste est longue et que je ne peux pas supprimer ça manuellement. J'ai tenté d'utiliser : (avec Cygwin)

sed -e "s/=*\\n/=\\n/g" fichier.txt > fichier2.txt

Et d'autres choses, mais rien ne fonctionne correctement. Si vous avez des idées je suis preneur.
Merci à vous !!!!
A voir également:

4 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 oct. 2008 à 18:26
Salut,
sed 's/=.*/=/' fichier
0
bkrqpzef Messages postés 197 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 13 juillet 2011 5
30 oct. 2008 à 18:31
OK ................
et le pire c'est que ça fonctionne. Merci !!
Alors je dois avoir le cerveau en compote là. Je ne comprend pas pourquoi mettre "=.*" alors que la chaine de caractère est justement entre le "=" et le ".".
Suis-je fou ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 oct. 2008 à 18:36
Non, en fait on substitue le signe égal (=) et tout ce qui suit (.*) par le signe égal (=).
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 oct. 2008 à 18:39
Tu peux aussi l'écrire comme ça :
sed 's/\(.*=\).*/\1/'
0
bkrqpzef Messages postés 197 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 13 juillet 2011 5
30 oct. 2008 à 19:02
Ok si j'ai bien compris le "." de ".*" n'a rien à voir avec le "." qui est au début de chaque ligne.
Je ne peux pas utiliser "*" sans mettre un "." devant ?

Pour :
maison=bateau
avion=chateau
etc ..
(sans le "." au début de ligne)

Je devrai aussi utiliser sed 's/=.*/=/' ?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
30 oct. 2008 à 19:16
Ok si j'ai bien compris le "." de ".*" n'a rien à voir avec le "." qui est au début de chaque ligne.
Exact. Le point est en fait un caractère qui sert dans les expressions régulières et représente n'importe quel caractère.

Je ne peux pas utiliser "*" sans mettre un "." devant ?
Si mais dans ce cas là ça ne veut pas dire la même chose. Si tu écris =* sed (ou autre) recherchera qu'un caractère représentant le signe égal ou plusieurs, voir même aucun. Alors que l'expression =.* recherchera un signe égal suivit éventuellement d'un ou plusieurs caractères quelconque y compris aucun.
0
bkrqpzef Messages postés 197 Date d'inscription samedi 19 novembre 2005 Statut Membre Dernière intervention 13 juillet 2011 5
30 oct. 2008 à 20:14
Que dire de plus qu'un grand : Merci !!!!!!!
0