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 21/07/2020, à 21:20

Marmotte2405

[Résolu] Aide pour optimiser une commande grep

Bonsoir tout le monde,

Il y a bien longtemps que je n'étais pas venue ici (et presque autant que je n'avais pas fait de linux).

Je cherche a optimiser une commande grep

Voila le genre de contenu de fichier que j'ai :

[73837] 2020/07/21 5:41:51.517 : [INFO] Action 'une' lancée par elle
[73983] 2020/07/21 5:41:51.993 : [INFO] Action 'une' lancée par
[74188] 2020/07/21 5:41:52.457 : [INFO] Action 'deux' lancée par lui
[74356] 2020/07/21 5:41:52.988 : [INFO] Action 'trois' lancée par
[74356] 2020/07/21 5:41:52.988 : [INFO] Action 'trois' lancée par nous
[74548] 2020/07/21 5:41:53.495 : [INFO] Action 'quatre' lancée par moi

je cherche à extraire les lignes d'une date (2020/06/30) qui finissent par 'par' (en l’occurrence elles n'ont pas le nom d'utilisateur)
et à filtrer par l'action trois.

Exemple de commande que je fais :

d=$(date +%Y'/'%m'/'%d);grep $d mon_fichier.log | grep 'par$' | grep trois

Ca me ressort bien la ligne :

[74356] 2020/07/21 5:41:52.988 : [INFO] Action 'trois' lancée par

mais j'ai l'impression que ce n'est pas très optimal, est ce que quelqu'un peu me confirmer/aider?

Dernière modification par Marmotte2405 (Le 21/07/2020, à 23:05)

Hors ligne

#2 Le 21/07/2020, à 21:51

Watael

Re : [Résolu] Aide pour optimiser une commande grep

salut,

grep "$d.*trois.*par\$" fichier

mais, le fichier ressemblant à un tableau, j'utiliserais awk, qui manipule des champs.

awk -vd="$d" '$2==d && $7=="'\''trois'\''" && $0~"par$"' fichier

Dernière modification par Watael (Le 21/07/2020, à 21:54)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#3 Le 21/07/2020, à 21:58

sputnick

Re : [Résolu] Aide pour optimiser une commande grep

Watael:

pourquoi tu backquote ton dollar dans grep ?

Pour le awk, plutot

 $NF == "par"

Dernière modification par sputnick (Le 21/07/2020, à 21:58)


On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#4 Le 21/07/2020, à 22:31

Watael

Re : [Résolu] Aide pour optimiser une commande grep

parce qu'il est entre guillemets, et non entre apostrophes, ce qui inhiberait son développement; il faut donc le protéger.


Connected \o/
Welcome to sHell. · eval is evil.

En ligne

#5 Le 21/07/2020, à 22:58

sputnick

Re : [Résolu] Aide pour optimiser une commande grep

Non, pas besoin quand le dollar est seul à la fin, teste:

grep "bash$" /etc/passwd

On ne peut pas mettre d'array dans un string!
https://sputnick.fr/

Hors ligne

#6 Le 21/07/2020, à 23:04

Marmotte2405

Re : [Résolu] Aide pour optimiser une commande grep

Super merci pour l'aide, les 2 commandes (grep amélioré et awk) fonctionnent mais je dois avouer que pour moi la grep est plus facile à comprendre ^^

Hors ligne

#7 Le 21/07/2020, à 23:25

Watael

Re : [Résolu] Aide pour optimiser une commande grep

sputnick a écrit :

Non, pas besoin quand le dollar est seul à la fin, teste:

grep "bash$" /etc/passwd

ah, oui ?!

merci.

Dernière modification par Watael (Le 21/07/2020, à 23:25)


Connected \o/
Welcome to sHell. · eval is evil.

En ligne