Sed

Résolu
Bonjour,

Je tente deseperement de suprimer des lignes contenant une série de chifres dans un dossie rde ce type:
TEST.txt
m m m m
-170.664 -170.664 0.00000000 0.00000000
-169.336 -171.664 0.00000000 0.00000000
m m m m

si je tape:
sed /170./d TEST.txt
rien ne se passe

si je tape:
sed /1/d TEST.txt
donne
m m m m
m m m m

si je tape:
sed /[17]/d TEST.txt
donne
m m m m
m m m m

si je tape:
sed /170/d TEST.txt
donne
m m m m
m m m m

En défintive sed suprime toutes les composantes de ma chaines de caracteres.
Comment le restreindre à exclusivement une suite de caractere.

D'avance merci

2 réponses

  1. Contributeur
    Salut,

    Je ne suis pas sûr d'avoir tout pigé ;-(

    En définitif à quoi devrait ressembler ton fichier une fois la commande appliquée ?
    1. Salut et merci de t'interesser à mon probleme.
      Le fait qu'il suprime toute les lignes avec '1' '7' '0' et '.'
      Alors que je voudrais seulement '170.'

      En tapant:
      sed /170./d TEST.txt
      devrait donner
      m m m m
      -169.336 -171.664 0.00000000 0.00000000
      m m m m

      Merci
      1. Contributeur
        Ben normalement c'est bien ce que ça devrait faire :

        $ cat fich 
        m m m m
        -170.664 -170.664 0.00000000 0.00000000
        -169.336 -171.664 0.00000000 0.00000000
        m m m m 
        
        $ sed '/170./d' fich 
        m m m m
        -169.336 -171.664 0.00000000 0.00000000
        m m m m 
        
        $

        Sur quel système es-tu ? Quel shell ? Quelle version de "sed" ?
      2. Ok, je pense avoir compris,
        Je suis sur mac osx 10.8 et mon terminal en bash, le fichier avait été enregistré en UTF-16, ce qui ne permettait pas de faire fonctionner la commande sed correctement.
        Une fois avoir copié ton extrait dans un nouveau fichier généré cette fois via mon terminal, tout marche parfaitement.
        Merci!!!
      3. Contributeur
        De rien ;-))

        Le format de fichier, qui plus est entre plusieurs systèmes, est souvent une source d'erreurs bien difficile à déceler ;-\