A voir également:
- Suppression de blanc en fin de ligne
- Partage de photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Forcer suppression fichier - Guide
- Aller à la ligne excel - Guide
- Test performance pc en ligne - Guide
6 réponses
loomchild
Messages postés
6
Date d'inscription
mardi 23 septembre 2003
Statut
Membre
Dernière intervention
17 septembre 2004
6
17 sept. 2004 à 21:46
17 sept. 2004 à 21:46
bonjour,
je m'excuse, mais ca ne me semble pas tres optimise comme solution, si je puis
me permettre...
En ouvrant ton fichier avec emacs, ca devrait aller vite:
M-x delete-trailing-whitespaces
Ensuite tu sauves:
C-X C-s
Ensuite tu quittes:
C-x C-c
--
Loomchild - ecchi nano wa ikeru to omoimasu
je m'excuse, mais ca ne me semble pas tres optimise comme solution, si je puis
me permettre...
En ouvrant ton fichier avec emacs, ca devrait aller vite:
M-x delete-trailing-whitespaces
Ensuite tu sauves:
C-X C-s
Ensuite tu quittes:
C-x C-c
--
Loomchild - ecchi nano wa ikeru to omoimasu
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
18 sept. 2004 à 18:21
18 sept. 2004 à 18:21
Utilise sed (stream editor), le plus classique , un peu cryptique,
je préfère PERL pour les traitement filtres plus complexes.
exemple avec sed
# afin de faire apparaître explicitement les fins de ligne j'ai ajouté un f à la fin de certaines lignes
explications
Le pattern " *f$"
recherche un ou plusieur espaces en fin de ligne avec notre f conventionnel
(méta-caractère $ : fin de ligne)
La commande "s" demande une substitution, ici une chaine vide entre les // finaux.
Tu peux écrire un script qui effectue un backup de ton fichier et rediriger la sortie.
exemple:
cp $MONFICHIER ${MONFICHIER}-bak
sed -e 's/ *f$//' < ${MONFICHIER}-bak > $MONFICHIER
rm ${MONFICHIER}-bak
Normalement
sed -e '/ +f$/d' < brol
devrait fonctionner ( " +" : au moins un espace) et fournir une solution plus lisible et plus élégante mais cela ne semble pas fonctionner . Je cherche l'erreur.
Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
je préfère PERL pour les traitement filtres plus complexes.
exemple avec sed
# afin de faire apparaître explicitement les fins de ligne j'ai ajouté un f à la fin de certaines lignes
johand@horus:~/tmp$ cat brol ligne1 f blahbla salut f blah3 f 1234 5685 00 f wxcvf kkkkkk johand@horus:~/tmp$ sed -e 's/ *f$//' < brol ligne1 blahbla salut blah3 1234 5685 00 wxcvf kkkkkk johand@horus:~/tmp$ sed --version GNU sed version 4.1.2 ....
explications
Le pattern " *f$"
recherche un ou plusieur espaces en fin de ligne avec notre f conventionnel
(méta-caractère $ : fin de ligne)
La commande "s" demande une substitution, ici une chaine vide entre les // finaux.
Tu peux écrire un script qui effectue un backup de ton fichier et rediriger la sortie.
exemple:
cp $MONFICHIER ${MONFICHIER}-bak
sed -e 's/ *f$//' < ${MONFICHIER}-bak > $MONFICHIER
rm ${MONFICHIER}-bak
Normalement
sed -e '/ +f$/d' < brol
devrait fonctionner ( " +" : au moins un espace) et fournir une solution plus lisible et plus élégante mais cela ne semble pas fonctionner . Je cherche l'erreur.
Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
18 sept. 2004 à 18:42
18 sept. 2004 à 18:42
Salut :)
Normalement
sed -e '/ +f$/d' < brol
devrait fonctionner ( " +" : au moins un espace) et fournir une solution plus lisible et plus élégante mais cela ne semble pas fonctionner . Je cherche l'erreur.
Ca ne fonctionne pas pour deux raison :)
La premiere, l'implementation des expressions regulieres n'est pas completement correcte dans sed donc un plus est interprété litteralement, il faut l'echapper
La seconde, c'est que le 'd' est utiliser pour detruire la ligne, et non le pattern, donc l'effet n'est pas celui attendu ;-)
...Mana mana
Tutudutu...
Normalement
sed -e '/ +f$/d' < brol
devrait fonctionner ( " +" : au moins un espace) et fournir une solution plus lisible et plus élégante mais cela ne semble pas fonctionner . Je cherche l'erreur.
Ca ne fonctionne pas pour deux raison :)
La premiere, l'implementation des expressions regulieres n'est pas completement correcte dans sed donc un plus est interprété litteralement, il faut l'echapper
sed -e '/ \+f$/d' <brol
La seconde, c'est que le 'd' est utiliser pour detruire la ligne, et non le pattern, donc l'effet n'est pas celui attendu ;-)
...Mana mana
Tutudutu...
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
18 sept. 2004 à 18:53
18 sept. 2004 à 18:53
Bonche, il en manquait un bout, sur une option de sed que j'avait utilisé pour les backup, mais ça se trouve pas dans toute les version... donc autant faire simple :)
...Mana mana
Tutudutu...
cat brol | sed 's/ \+f$//' >brol :)@++
...Mana mana
Tutudutu...
Salut,
Dans ton cas plusieurs solutions sont possibles...
a partir d'un éditeur de texte, tu remplace les " " par " ", jusqu'a ce qu'il y ai plus! tous les blancs en double seront remplacés par un seul, à répéter jusqu'à plus soif!
Sur le même principe, tu remplaces le blanc en fin de ligne avec le saut à la ligne par un saut à la ligne, ce qui fait que seul le blanc en fin de ligne (en fin des lignes) est supprimé, pareil jusqu'à plus soif!
Il y a encore d'autres méthodes c'est plus chiant (en C Java et autre)! si c'est juste pour balancer un texte, c'est pas la peine de s'emmmmmerder plus!
Dans ton cas plusieurs solutions sont possibles...
a partir d'un éditeur de texte, tu remplace les " " par " ", jusqu'a ce qu'il y ai plus! tous les blancs en double seront remplacés par un seul, à répéter jusqu'à plus soif!
Sur le même principe, tu remplaces le blanc en fin de ligne avec le saut à la ligne par un saut à la ligne, ce qui fait que seul le blanc en fin de ligne (en fin des lignes) est supprimé, pareil jusqu'à plus soif!
Il y a encore d'autres méthodes c'est plus chiant (en C Java et autre)! si c'est juste pour balancer un texte, c'est pas la peine de s'emmmmmerder plus!
Salut!
un utilisateur standard ne cherche pas forcément une solution "optimisée" peut-être une solution simple!
"emacs" cnnais pas, si il faut encore installer un truc qu'on à pas, en ligne de commande.... je sais pas s'il y a "optimisation"
A négocier.
un utilisateur standard ne cherche pas forcément une solution "optimisée" peut-être une solution simple!
"emacs" cnnais pas, si il faut encore installer un truc qu'on à pas, en ligne de commande.... je sais pas s'il y a "optimisation"
A négocier.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jisisv
Messages postés
3645
Date d'inscription
dimanche 18 mars 2001
Statut
Modérateur
Dernière intervention
15 janvier 2017
934
18 sept. 2004 à 18:59
18 sept. 2004 à 18:59
D'accord pour le "d" qui est une faute de copier coller.
D'accord l'implémentation n'est pas très correcte.
(je venais de reprendre l'O'Reilly à ce sujet pour vérifier si je me trompais)
En tout cas ce type d'expression régumière fonctionne normalement avec PERL. A investiguer /signaler .
johand@horus:~/tmp$ cat brol
ligne1 f
blahbla salut f
blah3 f
1234 5685 00 f
wxcvf
kkkkkk
johand@horus:~/tmp$ perl -ne 's/ +f$//; print ;' brol
ligne1
blahbla salut
blah3
1234 5685 00
wxcvf
kkkkkk
Remarquons qu'on peux écrire très vite du code incompréhensible en PERL .
C'est que je n'utilise pas souvent sed ;(
Conseillons alors PERL , awk ou Python
Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
D'accord l'implémentation n'est pas très correcte.
(je venais de reprendre l'O'Reilly à ce sujet pour vérifier si je me trompais)
En tout cas ce type d'expression régumière fonctionne normalement avec PERL. A investiguer /signaler .
johand@horus:~/tmp$ cat brol
ligne1 f
blahbla salut f
blah3 f
1234 5685 00 f
wxcvf
kkkkkk
johand@horus:~/tmp$ perl -ne 's/ +f$//; print ;' brol
ligne1
blahbla salut
blah3
1234 5685 00
wxcvf
kkkkkk
Remarquons qu'on peux écrire très vite du code incompréhensible en PERL .
C'est que je n'utilise pas souvent sed ;(
Conseillons alors PERL , awk ou Python
Johan
Gates gave you the windows.
GNU gave us the whole house.(Alexandrin)
asevere
Messages postés
13084
Date d'inscription
lundi 28 janvier 2002
Statut
Webmaster
Dernière intervention
23 novembre 2024
426
18 sept. 2004 à 19:08
18 sept. 2004 à 19:08
Yop, ça devrait fonctionner pareil... :)
Mais non :(
ce qui fit qu'a utiliser sed trop souvent on fait des expression incorrecte et qua on ne l'utilises pas assez souvent on passe deux heures retrouver à le truc :-s
Ceci dit, c'est peut-etre mieux implementé maintenant, vu que le dernier que j'ai compilé avait un certain nombre d'option en plus (dont celle des backup, bien pratique) là, sur un vieux compiler pas par moi, ca marche pas.
Enfin si mes souvenir sont juste, c'est une option de compilation qu'il faut rajouter, je ne sais pas pourquoi elle n'est pas plus utilisée :-(
@+
...Mana mana
Tutudutu...
Mais non :(
ce qui fit qu'a utiliser sed trop souvent on fait des expression incorrecte et qua on ne l'utilises pas assez souvent on passe deux heures retrouver à le truc :-s
Ceci dit, c'est peut-etre mieux implementé maintenant, vu que le dernier que j'ai compilé avait un certain nombre d'option en plus (dont celle des backup, bien pratique) là, sur un vieux compiler pas par moi, ca marche pas.
Enfin si mes souvenir sont juste, c'est une option de compilation qu'il faut rajouter, je ne sais pas pourquoi elle n'est pas plus utilisée :-(
@+
...Mana mana
Tutudutu...
En utilisant n'importe quel outil d'expression régulière
Perso, j'utilise ConTeXt qui permet les recherches par expression régulière et je fait :
Rechercher depuis le début
dans le fichier en cour
une recherche par expression régulière
dans le champ de recherche je mets sans les guillemets : " *$"
et dans le cadre réservé au remplacement je mets rien.
Ca va te remplacer les espaces (1er caractère) en nombre illimité (l'étoile) qu'il y ait 1 ou plusieurs espaces en fin de ligne (le dollar).
Perso, j'utilise ConTeXt qui permet les recherches par expression régulière et je fait :
Rechercher depuis le début
dans le fichier en cour
une recherche par expression régulière
dans le champ de recherche je mets sans les guillemets : " *$"
et dans le cadre réservé au remplacement je mets rien.
Ca va te remplacer les espaces (1er caractère) en nombre illimité (l'étoile) qu'il y ait 1 ou plusieurs espaces en fin de ligne (le dollar).