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 -
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
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:
- Supression des mots de 1, 2 et 3 caractères
- Supercopier 2 - Télécharger - Gestion de fichiers
- Ai suite 3 - Télécharger - Optimisation
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Exemple de mot de passe à 8 caractères - Guide
8 réponses
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]$;-))
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
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
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.
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.
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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
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