Extraire ligne à H-1

Résolu/Fermé
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024 - Modifié le 16 sept. 2021 à 09:54
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 - 17 sept. 2021 à 10:25
Bonjour,

J'ai un fichier de résultat contenant 2000 lignes (limit max): Chaque ligne correspond à un résultat de traitement.

Le format d'une ligne est le suivant:

rubrik00,VEGA,2021-09-16T06:32:57.327Z,2021-09-16T06:34:45.249Z,slbcfrbw2070,Success,Archival,VirtualMachine:::5736c60d-3298-4711-abf4-5f18885bb903-vm-122711,VmwareVirtualMachine,sapifrdxcvc04.fr.intranet,SLA_BENCH,2021-09-16T05:32:52.023Z,2021-09-16T07:32:57.327Z,false,LOCAL,0,555736582,96636764160,15627698,107922,RVMHM193S001062,0,false,7,2021-03-15T13:57:39.475Z,vm-122711,SIR-LIN2-DXC,poweredOn,2019-02-01T16:18:15.187Z,100.83.1.18,Unregistered,Red Hat Enterprise Linux 7 (64-bit),false,true,false,FAILED,sapifrdxcvc04.fr.intranet/SIRIUS/vm/VM_CLOUD/Linux

Le 3eme champs est le début du traitement.

Comment extraire toutes les lignes du fichier dont dont le 3eme champ est entre entre H-1 et H ou mm-30 et mm
Exemple, si je lance le script pour extraire les lignes à 3:05, j'aimerais avoir les lignes strictement entre 2H et 3H

L'objectif est de ne pas avoir de doublons après chaque extraction.

A noter que chaque chaque ligne est le résultat de l'API suivante:
https://$IP/api/v1/job_monitoring?limit=1000&job_event_status=Success,SuccessfulWithWarnings,Failure,Canceled&job_type=Backup&sort_by=EndTime&sort_order=desc" | jq -r '.jobMonitoringInfoList[] | "\(.startTime),\(.endTime),\(.objectName)....." ' . l'API ne possède pas de begindate.

J'essaie de faire quelque chose avec date --date "$DATE 1 hours ago" +%s mais ça se complique ensuite pour l'extraction.

Merci de votre aide.


Configuration: Windows / Chrome 92.0.4515.131
A voir également:

4 réponses

dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 sept. 2021 à 13:19
donc le champ 3 est
$ awk -F "," '{print $3}' fichier
2021-09-16T06:32:57.327Z

j'ai une date AAAA-MM-JJ et un temps HH:MM:SS
que faut-il tester, les champs 3 entre 6H et 6H 59. par ex. ?
1
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024
16 sept. 2021 à 14:08
Oui par exemple mais H-1 n'est pas gravé dans le marbre. Si le script est lancé toutes les 10 minutes, ce pourrait être entre 06:30 et 6:40.

De mon côté, j'ai fait une boucle sur le fichier et je teste le 3eme champ. je transforme en seconde et je teste par rapport à la même date avec 10 minutes de moins en seconde.

DATE10MM=`date --date "10 minutes ago" +%s`
for LINE in `cat FICHIER2000LIGNES`
do

STARTTIME=`echo $LINE | awk -F',' '{ print $3 }'`
STARTTIMESS=`date --date "$STARTTIME" +%s`

if (( "$STARTTIMESS" > "$DATE10MM" ))
then
==> j'édite ma ligne
fi
done

ça semble fonctionner. Qu'en pensez-vous?
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615 > bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024
17 sept. 2021 à 10:25
transformer le temps en secondes, c'est le meilleur moyen pour comparer
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
16 sept. 2021 à 11:49
hello
quel est le séparateur de champ , ou : ?
0
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024
16 sept. 2021 à 12:04
Bonjour,

C'est ,
0
bob737 Messages postés 144 Date d'inscription jeudi 24 septembre 2009 Statut Membre Dernière intervention 14 mars 2024
Modifié le 16 sept. 2021 à 15:51
Désolé, j'ai confondu répondre et commentaire.
0