Pages : 1
#1 Le 26/03/2018, à 18:31
- ar barzh paour
[Résolu] utilisation antislash
la solution en post #2 : espaces superflus avec en plus simplification avec option -w de grep
f="tmp.txt"
echo "yad;ComboBox" > $f
mot1="ComboBox"
mot2=""
res=$(head -1 "$f" | grep -iE "(^$mot1;?$)|(^$mot1;.*$)|(^.*;$mot1;?$)|(^.*;$mot1;.*$)" | grep -i "$mot2" )
echo $res
res=$(head -1 "$f" | grep -iE "(^$mot1;?$)|(^$mot1;.*$)|(^.*;$mot1;?$)|(^.*;$mot1;.*$)" | \
grep -i "$mot2" )
echo $res
res=$(head -1 "$f" | grep -iE "(^$mot1;?$)|(^$mot1;.*$)| \
(^.*;$mot1;?$)|(^.*;$mot1;.*$)" | \
grep -i "$mot2" )
echo $res
les 2 premières echo $res donnent bien yad;ComboBox
par contre le 3ème echo ne donne rien est-ce "normal"
je pensais qu'on pouvait utiliser \ n'importe où dans la ligne
Dernière modification par ar barzh paour (Le 04/04/2018, à 11:32)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#2 Le 26/03/2018, à 18:45
- pingouinux
Re : [Résolu] utilisation antislash
Bonsoir,
C'est bien compliqué ton histoire…
Le problème vient des espaces qui sont insérées dans la chaîne de recherche.
Il faut remplacer
res=$(head -1 "$f" | grep -iE "(^$mot1;?$)|(^$mot1;.*$)| \
(^.*;$mot1;?$)|(^.*;$mot1;.*$)" | \
grep -i "$mot2" )
par
res=$(head -1 "$f" | grep -iE "(^$mot1;?$)|(^$mot1;.*$)|\
(^.*;$mot1;?$)|(^.*;$mot1;.*$)" | \
grep -i "$mot2" )
Hors ligne
#3 Le 31/03/2018, à 11:20
- ar barzh paour
Re : [Résolu] utilisation antislash
@pingouinux
merci par ta réponse
je ne suis pas chez moi , je n'avais pas vu ta réponse
en fait
j'avais écrit cette 3ème solution pour que ce soit plus lisible visuellement , c'est tout , la première m'allait très bien
sinon compliqué ? il y a peut-être plus simple ...
ce que je cherche :
tous les fichiers dans un répertoire dont la première ligne contient exactement "mot1" , avec éventuellement en plus "mot2" ( mais xxxmot2yyy conviendra )
la première ligne des fichiers contient des mots séparés par un point virgule , sauf le dernier mot qui peut ou non être suivi d'un point virgule
par exemple , sans considérer le mot2 , toutes ces lignes conviendront
mot1
mot1;
mot1;alpha
alpha;mot1
alpha;mot1;
alpha;mot1;beta
alpha;mot1;beta;
ne conviendront pas
xxmot1
xxmot1;
mot1xx
mot1xx;
alpha;xmot1;beta
alpha;mot1x;beta
et tout un tas d'autres combinaisons
mot2 lui pourra se trouver partout sous la forme xxxmot2yyy ou xxxmot2yyy; (xxx et yyy pouvant être vide)
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#4 Le 31/03/2018, à 12:02
- pingouinux
Re : [Résolu] utilisation antislash
Pour mot1
... | grep -wE ';?mot1;?'
Ajouté :
Ou peut-être cela est-il suffisant
... | grep -w 'mot1'
Dernière modification par pingouinux (Le 31/03/2018, à 12:25)
Hors ligne
#5 Le 31/03/2018, à 17:31
- ar barzh paour
Re : [Résolu] utilisation antislash
du fichier rech.txt ci dessous
mot1
mot1;
mot1;alpha
alpha;mot1
alpha;mot1;
alpha;mot1;beta
alpha;mot1;beta;
xxmot1
xxmot1;
mot1xx
mot1xx;
alpha;xmot1;beta
alpha;mot1x;beta
MOT1
grep -iw 'mot1' rech.txt
mot1
mot1;
mot1;alpha
alpha;mot1
alpha;mot1;
alpha;mot1;beta
alpha;mot1;beta;
MOT1
à priori l'option -w répond à ce que je désire
de man grep option -w
Sélectionnez uniquement les lignes contenant des correspondances qui forment ensemble
mots. Le test est que la sous-chaîne correspondante doit être soit
au début de la ligne, ou précédé d'un non-mot
caractère constitutif. De même, il doit être soit à la fin
de la ligne ou suivi d'un caractère constitutif non-mot.
Les caractères constituant un mot sont des lettres, des chiffres et
souligner.
je testerai en rentrant chez moi
bon week-end
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#6 Le 31/03/2018, à 18:17
- erresse
Re : [Résolu] utilisation antislash
Hello !
Moi, j'ai plutôt ça dans le man :
-w, --word-regexp
Ne sélectionner que les lignes contenant des correspondances formant des mots complets. La sous-chaîne correspondante doit donc soit se
trouver au début de la ligne, soit être précédée d'un caractère ne pouvant entrer dans la constitution d'un mot. De même, elle doit soit se
trouver à la fin de la ligne, soit être suivie par un caractère ne pouvant entrer dans la constitution d'un mot. Les caractères composant les
mots sont les lettres, les chiffres et le souligné « _ ».
C'est quand même un plus lisible, non ?
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#7 Le 03/04/2018, à 17:33
- ar barzh paour
Re : [Résolu] utilisation antislash
merci eresse pour le man en français ....
plus exactement ce que j'ai dans le man :
-w, --word-regexp
Select only those lines containing matches that form whole
words. The test is that the matching substring must either be
at the beginning of the line, or preceded by a non-word
constituent character. Similarly, it must be either at the end
of the line or followed by a non-word constituent character.
Word-constituent characters are letters, digits, and the
underscore
ce que j'ai mis dans le post 5 est une traduction googgle , il est vrai que c'est un peu du franco-chinois , mais ça me dépanne
j'aimerai bien avoir tout le man en français
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne
#8 Le 03/04/2018, à 17:50
- erresse
Re : [Résolu] utilisation antislash
Regarde les paquets que tu as d'installés : manpages, manpages-dev, manpages-fr et manpages-fr-extra chez moi...
Plus de 50 ans d'informatique, ça en fait des lignes de commandes en console, mais on n'avait pas le choix...
Excellente raison pour, aujourd'hui qu'on le peut, utiliser au maximum les INTERFACES GRAPHIQUES !
Important : Une fois le problème solutionné, pensez à clore votre sujet en ajoutant [Résolu] devant le titre du 1er message, et un bref récapitulatif de la solution à la fin de celui-ci. Merci.
Hors ligne
#9 Le 04/04/2018, à 11:21
- ar barzh paour
Re : [Résolu] utilisation antislash
merci eresse je viens d'installer manpages-fr et manpages-fr-extra , évidemment c'est plus parlant
donc même résultat maintenant que le post #6 , en français
PC : B760M DS3H DDR4, 12th Gen Intel(R) Core(TM) i3-12100, RAM DDR4 8GiB -2400 Ubuntu 20.04, 22.04, 24.04 (en test )
Portable1 : ThinkPad P50 I7-6820HQ, 16G0 Ram Ubuntu 22.04 Ubuntu 24.04 , W10-PRO( en voyage )
Portable2 : T5750 @ 2.00GHz RAM 1GiB DDR2 667 Mhz Ubuntu 20.04 ( batterie HS )
stourm a ran war bep tachenn (Angela Duval) ( Je combats sur tous les fronts )
Hors ligne