Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#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 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 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 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 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 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