Suppression chaine de caractère

Résolu
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -  
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Modérateur Dernière intervention   4 896
 
Salut,
sed 's/=.*/=/' fichier
0
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Modérateur Dernière intervention   4 896
 
Tu peux aussi l'écrire comme ça :
sed 's/\(.*=\).*/\1/'
0
bkrqpzef Messages postés 197 Date d'inscription   Statut Membre Dernière intervention   5
 
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   Statut Modérateur Dernière intervention   4 896
 
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   Statut Membre Dernière intervention   5
 
Que dire de plus qu'un grand : Merci !!!!!!!
0