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

Résolu
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -  
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

8 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
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
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
sed 's/\b[^ .0-9/-]\{1,2\}\b//g;s/ \+/ /g;s/^ //g'
-1
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
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
bong03 Messages postés 43 Date d'inscription   Statut Membre Dernière intervention   2
 
Message clos.
-1