#1 Le 06/06/2014, à 15:42
- Le Goss
[Résolu] bash: grep garder les mots entiers
Bonjour à tous,
J'ai une commande avec du grep
grep -i --color=always etc....
Il me coupe les mots en fin de ligne quand ils sont trop longs.
Y a-t-il un remède? je veux dire à part la colle forte?
Merci pour votre aide,
Cordialement
Dernière modification par Le Goss (Le 07/06/2014, à 11:31)
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#2 Le 06/06/2014, à 20:45
- tiramiseb
Re : [Résolu] bash: grep garder les mots entiers
Salut,
grep lui-même ne coupe pas les mots en fin de ligne...
Peux-tu donner plus de détails sur ton problème ? Commande exécutée, résultat obtenu, etc...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#3 Le 06/06/2014, à 22:04
- Zakhar
Re : [Résolu] bash: grep garder les mots entiers
Je confirme ce que dit tiramiseb.
Ou alors tu es victime d'une "illusion d'optique", tu crois que c'est un mot long et en fait il y a un retour chariot qui le coupe, ou dans l'autre sens, grep trouve bien le mot long, mais comme le terminal wrappe les lignes, ça "déborde" sur la ligne du dessous !
Un conseil quand tu n'es pas sûr qu'il n'y ait pas de caractères "invisibles" en entrée comme en sortie, tu peux "piper" entrée/sortie sur hd qui te permettra de voir exactement de quoi il s'agit.
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#4 Le 07/06/2014, à 07:30
- Le Goss
Re : [Résolu] bash: grep garder les mots entiers
Bonjour,
Peux-tu donner plus de détails sur ton problème ? Commande exécutée, résultat obtenu, etc...
La commande complète
w3m -cols 500 -dump http://fr.wikipedia.org/wiki/Napol%C3%A9on_Ier | egrep -i --color=always "napoléon"
Le problème obtenu est décrit plus haut... et c'est pas une illusion d'optique!
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#5 Le 07/06/2014, à 07:33
- tiramiseb
Re : [Résolu] bash: grep garder les mots entiers
J'ai exécuté ta commande, je ne vois pas où grep coupe les mots en fin de ligne...
Peux-tu donner plus de détails Où vois-tu une coupure de mot ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#6 Le 07/06/2014, à 07:48
- Le Goss
Re : [Résolu] bash: grep garder les mots entiers
25. Napoléon Joseph Charles Paul Bonaparte (1822-1891), fils de Jérôme ;
Deux neveux moururent du vivant de Napoléon (Dermid Leclerc et Napoléon Charles Bonaparte, ce dernier ayant été considéré comme héritier présomptif de la couronne impériale entre 1804 et 1807 selon la constitution), et deux naquirent après son décès.
Pour "après son décès", "après" est coupé en "apr" et "ès" à la ligne suivante
91. ↑ Les enfants de Lucien, nés de son deuxième mariage, ont été reconnus princes français en 1815 par Napoléon lors de sa réconciliation avec leur père et apparaissent donc dans la liste, bien qu'ils n'entrent pas dans la succession. En revanche, le fils de Jérôme né de son mariage américain, dissout pour illégalité (minorité du marié, absence d'autorisation du parent tuteur), n'apparaît pas.
Pour "En revanche", "En" est coupé en deux
etc.
Et encore ça, c'est avec une fenêtre maximisée! Sur une fenêtre réduite, des coupures comme ça, il y en a en pagaille!
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#7 Le 07/06/2014, à 08:13
- Zakhar
Re : [Résolu] bash: grep garder les mots entiers
C'est bien une "illusion d'optique" à ce que je comprends que tu "reproches" à ce que tu obtiens dépendant de la fenêtre du terminal.
Relis mon message.
Démo :
$ egrep -i --color=always "napoléon" test
25. Napoléon Joseph Charles Paul Bonaparte (1822-1891), fils de Jérôme ;
Deux neveux moururent du vivant de Napoléon (Dermid Leclerc et Napoléon Charles
Bonaparte, ce dernier ayant été considéré comme héritier présomptif de la cour
onne impériale entre 1804 et 1807 selon la constitution), et deux naquirent apr
ès son décès.
C'est ainsi que cela apparaît sur un terminal standard à 80 colonnes, car comme je l'explique plus haut, le terminal "wrappe" les lignes qui dépassent la largeur affichable.
Ainsi, dans l'exemple, "couronne" et "après" apparaissent "coupés"... mais en réalité ils ne le sont pas, c'est juste le wrapping qui produit cette "illusion d'optique".
Si tu veux vérifier s'il y a ou pas des retours chariots dans la sortie, tu pipe sur hd, comme ça :
$ egrep -i --color=always "napoléon" test | hd
00000000 32 35 2e 20 1b 5b 30 31 3b 33 31 6d 1b 5b 4b 4e |25. .[01;31m.[KN|
00000010 61 70 6f 6c c3 a9 6f 6e 1b 5b 6d 1b 5b 4b 20 4a |apol..on.[m.[K J|
00000020 6f 73 65 70 68 20 43 68 61 72 6c 65 73 20 50 61 |oseph Charles Pa|
00000030 75 6c 20 42 6f 6e 61 70 61 72 74 65 20 28 31 38 |ul Bonaparte (18|
00000040 32 32 2d 31 38 39 31 29 2c 20 66 69 6c 73 20 64 |22-1891), fils d|
00000050 65 20 4a c3 a9 72 c3 b4 6d 65 20 3b 0a 44 65 75 |e J..r..me ;.Deu|
00000060 78 20 6e 65 76 65 75 78 20 6d 6f 75 72 75 72 65 |x neveux mourure|
00000070 6e 74 20 64 75 20 76 69 76 61 6e 74 20 64 65 20 |nt du vivant de |
00000080 1b 5b 30 31 3b 33 31 6d 1b 5b 4b 4e 61 70 6f 6c |.[01;31m.[KNapol|
00000090 c3 a9 6f 6e 1b 5b 6d 1b 5b 4b 20 28 44 65 72 6d |..on.[m.[K (Derm|
000000a0 69 64 20 4c 65 63 6c 65 72 63 20 65 74 20 1b 5b |id Leclerc et .[|
000000b0 30 31 3b 33 31 6d 1b 5b 4b 4e 61 70 6f 6c c3 a9 |01;31m.[KNapol..|
000000c0 6f 6e 1b 5b 6d 1b 5b 4b 20 43 68 61 72 6c 65 73 |on.[m.[K Charles|
000000d0 20 42 6f 6e 61 70 61 72 74 65 2c 20 63 65 20 64 | Bonaparte, ce d|
000000e0 65 72 6e 69 65 72 20 61 79 61 6e 74 20 c3 a9 74 |ernier ayant ..t|
000000f0 c3 a9 20 63 6f 6e 73 69 64 c3 a9 72 c3 a9 20 63 |.. consid..r.. c|
00000100 6f 6d 6d 65 20 68 c3 a9 72 69 74 69 65 72 20 70 |omme h..ritier p|
00000110 72 c3 a9 73 6f 6d 70 74 69 66 20 64 65 20 6c 61 |r..somptif de la|
00000120 20 63 6f 75 72 6f 6e 6e 65 20 69 6d 70 c3 a9 72 | couronne imp..r|
00000130 69 61 6c 65 20 65 6e 74 72 65 20 31 38 30 34 20 |iale entre 1804 |
00000140 65 74 20 31 38 30 37 20 73 65 6c 6f 6e 20 6c 61 |et 1807 selon la|
00000150 20 63 6f 6e 73 74 69 74 75 74 69 6f 6e 29 2c 20 | constitution), |
00000160 65 74 20 64 65 75 78 20 6e 61 71 75 69 72 65 6e |et deux naquiren|
00000170 74 20 61 70 72 c3 a8 73 20 73 6f 6e 20 64 c3 a9 |t apr..s son d..|
00000180 63 c3 a8 73 2e 0a |c..s..|
00000186
Tu peux alors constater qu'il n'y a pas de retour à la ligne entre "cour" et "ronne" qui apparaissent pourtant "coupés" (wrapping) ni entre "apr" et "ès".
Dernière modification par Zakhar (Le 07/06/2014, à 08:15)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#8 Le 07/06/2014, à 08:20
- tiramiseb
Re : [Résolu] bash: grep garder les mots entiers
Ok, donc il ne s'agit pas de grep qui coupe les mots.
C'est ton terminal qui te montre une ligne sur plusieurs lignes. La sortie de grep contient bien les lignes entières.
D'ailleurs ça ressort sur ton copier-coller : les lignes que tu montres sont bien complètes sur le forum...
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#9 Le 07/06/2014, à 08:20
- Le Goss
Re : [Résolu] bash: grep garder les mots entiers
Je comprends mieux l'expression "illusion d'optique": le terminal m'a abusé.
Comment faire alors pour que le le terminal ne "wrappe" pas les lignes qui dépassent la largeur affichable?
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#10 Le 07/06/2014, à 08:34
- tiramiseb
Re : [Résolu] bash: grep garder les mots entiers
http://google.fr/?q=terminal+no+wrap
pas sûr que ce soit vraiment possible.
Mais c'est quoi ton besoin, à la base ?
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#11 Le 07/06/2014, à 08:41
- Le Goss
Re : [Résolu] bash: grep garder les mots entiers
Mon besoin est tout simple: un confort de lecture.
Et il m'arrive très fréquemment de lire le résultat de commande comme celle que je prend en exemple.
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#12 Le 07/06/2014, à 08:52
- Zakhar
Re : [Résolu] bash: grep garder les mots entiers
Comme je te dis, tu as alors 2 solutions standard :
- le hd pour vérifier les caractères "invisibles" (mais du coup ce n'est pas trop pratique à lire)
- la redirection vers un fichier qui tu ouvres ensuite avec un éditeur de ton choix, quasiment tous les éditeurs ont une fonction "no-wrap" (par défaut sur gedit par exemple)... même nano !
Dernière modification par Zakhar (Le 07/06/2014, à 08:52)
"A computer is like air conditioning: it becomes useless when you open windows." (Linus Torvald)
Hors ligne
#13 Le 07/06/2014, à 09:20
- credenhill
Re : [Résolu] bash: grep garder les mots entiers
hello
une méthode
commande | cut -c 1-$COLUMNS
Hors ligne
#14 Le 07/06/2014, à 09:32
- melixgaro
Re : [Résolu] bash: grep garder les mots entiers
salut,
Pourriez-vous dire « replier les lignes » au lieu de cet horrible « wrap les lignes » svp ?
sinon pour le problème de Le Goss, je propose de chaîner la sortie de sa commande à less comme ceci
commande qui sort un truc vraiment vraiment long | less -SR
Les lignes longues seront virtuellement coupées, contrairement à la commande de credenhill qui fait disparaître tout ce qu'il y a au-delà de la colonne $COLUMNS
Pour la lecture avec less : touches gauche / droite, pour se déplacer horizontalement dans le texte et touches haut/bas, pour se déplacer verticalement.
Dernière modification par melixgaro (Le 07/06/2014, à 09:32)
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#15 Le 07/06/2014, à 10:54
- Le Goss
Re : [Résolu] bash: grep garder les mots entiers
| less -SR
Je vais prendre cette commande qui correspond d'avantage à mon problème actuel.
| cut -c 1-$COLUMNS
Je garde aussi cette commande qui me sera utile prochainement.
Merci à tous pour vos propositions!
Problème résolu.
Si je pose une question sur le forum, ce n'est pas par paresse ou pour faire faire "mes devoirs"; c'est par ignorance: j'ai 51 berges. Et, par principe, je préfère être traité d'ignare que de fainéant.
Samsung i7-3630QM CPU @ 2.40GHz × 8 - 64 bits - RAM 7,7 Gio - DD 976 Go - Bodhi 6.0.0 Ubuntu 20.04
Allergique au wysiwyg; traitement à vie: Lilypond - LaTeX - txt2tags
Hors ligne
#16 Le 07/06/2014, à 12:49
- tiramiseb
Re : [Résolu] bash: grep garder les mots entiers
Très bonne idée, la commande "less"
Juste une remarque, melixgaro, pour moi "replier" n'est pas synonyme de l'horrible anglicisme "wrap". Dans un éditeur de type IDE, "replier" ça permet de cacher des lignes (toutes les lignes d'une fonction par exemple). Cela dit, si tu me retrouves un bon équivalent français, je serais heureux de l'utiliser. Mais pour moi, "replier" n'a pas la même signification
Sébastien Maccagnoni - https://www.maccagnoni.eu - https://www.domotego.com
Hors ligne
#17 Le 07/06/2014, à 13:22
- melixgaro
Re : [Résolu] bash: grep garder les mots entiers
à tiramiseb
voui, je sais qu'il est toujours délicat de trouver des traductions adaptées. J'avais pensé à « tronquer », mais ça convient mieux lorsque la coupe se fait n'importe où, y compris au milieu d'un mot (comme avec la commande cut proposée qui tronque la ligne). « replier » convient bien, je trouve : ça correspond une peu à ce qui se passe graphiquement : la ligne « de texte » est pliée sur plusieurs lignes « typographiques ». Enfin, je n'ai pas mieux pour l'instant. En tout cas, il n'y a pas de conflit avec l'utilisation de plier/replier dans le cadre d'un éditeur pour programmation. Les mots peuvent avoir plusieurs sens, en général le contexte permet de trancher.
Linux depuis ~2007. Xubuntu seulement.
Hors ligne
#18 Le 07/06/2014, à 13:27
- melixgaro
Re : [Résolu] bash: grep garder les mots entiers
pour compléter l'option S de la commande less s'occupe de garder l'intégrité des lignes et l'option R s'occupe de prendre en charge certains caractères (genre si la commande d'avant colorise sa sortie, les couleurs seront conservées à travers less ou des fois certains accents codés bizarrement...)
Linux depuis ~2007. Xubuntu seulement.
Hors ligne