Obtener líneas entre dos marcas de time de un file

Tengo este file grande que necesito pasar usando la date y la hora. Cada línea en este file tiene una date y hora.

Necesito search entre líneas y get las líneas que se encuentran entre dos dates y horas específicas.

Archivo de ejemplo (el campo de date y hora es $ 2 y $ 3):

SERVER 2015-12-12 05:00:20 some_text_here something SERVER 2015-11-02 12:22:40 some_text_here something SERVER 2015-12-11 20:00:00 some_text_here something SERVER 2015-12-11 23:00:00 some_text_here something SERVER 2015-12-12 00:30:00 some_text_here something SERVER 2015-12-12 00:59:00 some_text_here something SERVER 2015-09-20 03:28:11 some_text_here something SERVER 2015-04-16 04:49:59 some_text_here something 

El command que probé (los usuarios tienen que proporcionar 4 arguments al ejecutar el script):

 AAA="$1 $2" BBB="$3 $4" awk '$2" "$3>="'"$AAA"'" && $2" "$3<="'"$BBB"'"' file.txt > newfile.txt 

Estoy usando las líneas de arriba como un script, pero no funciona.

newfile.txt debería contener (usando arguments 2015-12-11 20:00:00 2015-12-12 01:00:00 ):

 SERVER 2015-12-11 20:00:00 some_text_here something SERVER 2015-12-11 23:00:00 some_text_here something SERVER 2015-12-12 00:30:00 some_text_here something SERVER 2015-12-12 00:59:00 some_text_here something 

Tal vez necesite un script que pueda ingresar las dos dates y horas específicas. enter image description here

Código:

 #!/bin/bash if [ $# -ne 4 ];then exit 0 fi AAA=$1" "$2 BBB=$3" "$4 awk -v begintime="${AAA}" -v endtime="${BBB}" '$2" "$3>=begintime && $2" "$3<=endtime' exa > newfile.txt 

El único problema real es que asigna $AAA y $BBB lugar de AAA y BBB . Entonces si lo haces (casi lo mismo que tu código):

 AAA="2015-12-11 20:00:00" BBB="2015-12-12 01:00:00" awk '$2" "$3>="'"$AAA"'" && $2" "$3<="'"$BBB"'"' file.txt > newfile.txt 

ya debería funcionar Pero recomiendo los siguientes cambios adicionales para networkingucir los problemas de cotización potencial (especialmente si reutiliza este apprach en otro lugar o pone caracteres especiales en AAA o BBB ):

 AAA="2015-12-11 20:00:00" BBB="2015-12-12 01:00:00" awk -v string1="$AAA" -v string2="$BBB" '$2" "$3>=string1 && $2" "$3<=string2' file.txt > newfile.txt 

Puede leer sobre -v en la página del manual de awk .

awk no es la mejor herramienta.

 sed -e "/^$AAA/,/^$BBB/,p" file.txt 

y man sed .