2017-10-12 12 views
0

J'ai un fichier journal contient toutes les informations.Comment extraire des lignes d'un fichier en utilisant des paramètres dans bash

2017-09-21 02:01:11,130 [http-nio-8080-exec-5] INFO - Inbound Message 
... 
... 
2017-09-21 09:01:11,130 [http-nio-8080-exec-5] INFO - Inbound Message 
---------------------------- 
ID: 6044 
Address: http://localhost/serveur/Service?wsdl 
Encoding: UTF-8 
Http-Method: POST 
... 
2017-09-21 12:01:11,130 [http-nio-8080-exec-5] INFO - Inbound Message 
... 

Je veux extraire seulement des informations entre 2 dates. Pour exemple, si je veux des informations entre 21.09.2017 09 .. et 21/09/2017 12 J'aurais quelque chose comme ceci:

./script.sh 2017-09-21 09 2017-09-21 12 
# $1 = 2017-09-21 
# $2 = 09 
# $3 = 2017-09-21 
# $4 = 12 
# $1 & 2 are date and hour to begin extract 
# $3 & 4 are date and hour to finish extract 

mon script est comme ça. Je n'ai pas de connaissances en programmation shell mais j'ai essayé de le faire. Malheureusement, cela ne fonctionne pas

Quelqu'un peut-il me dire où est le problème?

+0

Ce n'est pas 'bash' syntaxe – hek2mgl

Répondre

2
$ awk '/2017-09-21 09/{a=1};a;/2017-09-21 12/{exit}' input 
2017-09-21 09:01:11,130 [http-nio-8080-exec-5] INFO - Inbound Message 
---------------------------- 
ID: 6044 
Address: http://localhost/serveur/Service?wsdl 
Encoding: UTF-8 
Http-Method: POST 
... 
2017-09-21 12:01:11,130 [http-nio-8080-exec-5] INFO - Inbound Message 

Plus alternatives trouvées here

2

approche court sed (correspondant à une gamme de modèles /.../,/.../):

sed -n '/2017-09-21 09/,/2017-09-21 12/p' logfile 

----------

La même chose peut être faite avec awk (encore plus court):

awk '/2017-09-21 09/,/2017-09-21 12/' logfile 
+0

Et pour quitter le processus après l'appariement 21/09/2017 12 je devrais utiliser/q qui est-il? – Chinovski

+0

@Chinovski, non, pas dans ce cas. 'q' ne devrait pas être ajouté ici – RomanPerekhrest

+0

@tripleee, tous les cas étendus auraient dû être décrits et développés dans la question. Tout le monde pourrait inventer les conditions de plus en plus étendues – RomanPerekhrest