Supression des mots de 1, 2 et 3 caractères

Résolu
bong03 Messages postés 44 Statut Membre -  
bong03 Messages postés 44 Statut Membre -
Bonjour,

Voilà je cherche à faire un script simple avec sed (par exemple, sed c'est bien ;) ) pour supprimer tous les mots de moins de 4 caractères d'un fichier texte.

Par exemple : j'ai le fichier texte dont le contenu est le suivant :

Hier Toto est partie à la chasse et a ramené du gibier

Le résultat doit être un autre fichier contenant :

Hier Toto partie chasse ramené gibier

Merci pour votre aide.

Alf

8 réponses

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,
    [tmpfs]$ echo $var
    Hier Toto est partie à la chasse et a ramené du gibier
    
    [tmpfs]$ echo $var | sed 's/\b[^ ]\{1,3\}\b//g;s/ \+/ /g'
    Hier Toto partie chasse ramené gibier
    
    [tmpfs]$
    ;-))
    -1
  2. bong03 Messages postés 44 Statut Membre 3
     
    Bonjour,

    Merci pour ce script, j'ai pas pensé utilisé le effacement arrière \b...

    Par contre il faut que je fasse 3 ou 4 passes pour avoir un fichier final dont la taille ne bouge plus.
    Et là je comprend pas pourquoi.

    Je vais attendre un peu si vous avez des idées du pourquoi du comment. Ensuite je ferais un script qui enchaine 3 ou 4 passes...

    A+

    Alf
    -1
  3. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Re-

    j'ai pas pensé utilisé le effacement arrière \b
    Non ça c'est les limites de mots qu'on appelle...

    Par contre il faut que je fasse 3 ou 4 passes pour avoir un fichier final dont la taille ne bouge plus.
    Et là je comprend pas pourquoi.

    Affiche ton fichier, ça sera plus simple à adapter.
    -1
  4. bong03 Messages postés 44 Statut Membre 3
     
    Re,

    En affichant le fichier je ne trouve pas pourquoi... mais bon c'est pas trop grave.

    Autre choses :

    Dans mon fichier texte je me retrouve avec plusisuers fois le même mot. En fait je voudrais ne garder qu'une occurence de chaque mot.

    Quelqu'un a-t-il une idée ?

    Merci encore de m'aider.

    Alf
    -1
    1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
       
      En affichant le fichier je ne trouve pas pourquoi... mais bon c'est pas trop grave.
      Je voulais dire : "Affiche-nous ton fichier original histoire qu'on voit sa structure et qu'on y fasse des tests" ;-))
      -1
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. bong03 Messages postés 44 Statut Membre 3
     
    RE,

    Alors, j'ai pas mal avancé. avec un sort puis un uniq j'ai bien qu'une fois chaque mot et cela va très vite.

    Jipicy,
    Mon pb maintenant c'est qu'une date au format 99/99/9999 dispartait avec le script qu tu m'as indiqué dans ton 1er post.
    VAR='Hier Toto est parti a la chasse et a ramené du gibier 12/03/2006'
    echo $VAR | sed 's/\b[^ ]\{1,2\}\b//g;s/ \+/ /g;s/^ //g'
    donne :
    Hier Toto est parti chasse ramené gibier 2006
    au lieu de :
    Hier Toto est parti chasse ramené gibier 12/03/2006

    Mais bon, si c'est un - ou un . qui remplace le / dans les format de date...

    Merci encore pour votre aide.

    Alf
    -1
  7. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    sed 's/\b[^ .0-9/-]\{1,2\}\b//g;s/ \+/ /g;s/^ //g'
    -1
  8. bong03 Messages postés 44 Statut Membre 3
     
    Un grand merci jipicy, mais malgré tout tes efforts cela ne va pas non plus :
    il garde les mots de 1 et 2 chiffres !

    VAR='Hier Toto est parti a la chasse et a ramené du gibier 12/03/2006 1 23 454'
    echo $VAR | sed 's/\b[^ .0-9/-]\{1,2\}\b//g;s/ \+/ /g;s/^ //g'
    donne :
    Hier Toto est parti chasse ramené gibier 12/03/2006 1 23 454
    au lieu de :
    Hier Toto est parti chasse ramené gibier 12/03/2006 454

    Bon, je laisse tomber pour le moment...

    Je clos ce post.

    Merci encore pour m'avoir aider à progresser en sed et expressions régulières.

    Alf
    -1
  9. bong03 Messages postés 44 Statut Membre 3
     
    Message clos.
    -1