Suppression chaine de caractère

Résolu
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 !!!!
Configuration: Windows XP
Firefox 3.0.3

4 réponses

  1. 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 ?
    1. Modérateur
      Non, en fait on substitue le signe égal (=) et tout ce qui suit (.*) par le signe égal (=).
    2. Modérateur
      Tu peux aussi l'écrire comme ça :
      sed 's/\(.*=\).*/\1/'
  2. 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/=.*/=/' ?
    1. Modérateur
      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.