#!/bin/bash
set -- /etc/debian_version "[00:00:00:000][01-01-2024]" "[23:59:59:999][31-12-2024]"
# Check if correct number of arguments are passed
if [ "$#" -ne 3 ]; then
echo "Usage: $0 <log_file_name> <start_timestamp> <end_timestamp>"
echo "Timestamps should be in the format '[HH:MM:SS:SSS][DD-MM-YYYY]'"
exit 1
fi
log_file=$1
start_timestamp=$2
end_timestamp=$3
# Check if log file exists
if [ ! -f "$log_file" ]; then
echo "File not found: $log_file"
exit 1
fi
awk -v start="$start_timestamp" -v end="$end_timestamp" '
function parsedate(date) {
split(date, a, /[]:[-]+/)
return a[8] "-" a[7] "-" a[6] "T" a[2] ":" a[3] ":" a[4] "." a[5]
}
BEGIN {
st = parsedate(start)
et = parsedate(end)
}
((p = parsedate($0)) >= st) && (p <= et)' <<\:
[01:01:01:001][31-12-2023] First log line
[02:02:02:002][01-01-2024] Second log line
[03:03:03:003][31-12-2024] Third log line
[04:04:04:004][01-01-2025] Fourth log line
:
IyEvYmluL2Jhc2gKCnNldCAtLSAvZXRjL2RlYmlhbl92ZXJzaW9uICJbMDA6MDA6MDA6MDAwXVswMS0wMS0yMDI0XSIgIlsyMzo1OTo1OTo5OTldWzMxLTEyLTIwMjRdIgoKIyBDaGVjayBpZiBjb3JyZWN0IG51bWJlciBvZiBhcmd1bWVudHMgYXJlIHBhc3NlZAppZiBbICIkIyIgLW5lIDMgXTsgdGhlbgogICAgZWNobyAiVXNhZ2U6ICQwIDxsb2dfZmlsZV9uYW1lPiA8c3RhcnRfdGltZXN0YW1wPiA8ZW5kX3RpbWVzdGFtcD4iCiAgICBlY2hvICJUaW1lc3RhbXBzIHNob3VsZCBiZSBpbiB0aGUgZm9ybWF0ICdbSEg6TU06U1M6U1NTXVtERC1NTS1ZWVlZXSciCiAgICBleGl0IDEKZmkKCmxvZ19maWxlPSQxCnN0YXJ0X3RpbWVzdGFtcD0kMgplbmRfdGltZXN0YW1wPSQzCgojIENoZWNrIGlmIGxvZyBmaWxlIGV4aXN0cwppZiBbICEgLWYgIiRsb2dfZmlsZSIgXTsgdGhlbgogICAgZWNobyAiRmlsZSBub3QgZm91bmQ6ICRsb2dfZmlsZSIKICAgIGV4aXQgMQpmaQoKYXdrIC12IHN0YXJ0PSIkc3RhcnRfdGltZXN0YW1wIiAtdiBlbmQ9IiRlbmRfdGltZXN0YW1wIiAnCiAgZnVuY3Rpb24gcGFyc2VkYXRlKGRhdGUpIHsKICAgICAgICBzcGxpdChkYXRlLCBhLCAvW106Wy1dKy8pCiAgICAgICAgcmV0dXJuIGFbOF0gIi0iIGFbN10gIi0iIGFbNl0gIlQiIGFbMl0gIjoiIGFbM10gIjoiIGFbNF0gIi4iIGFbNV0KICB9CiAgQkVHSU4gewogICAgc3QgPSBwYXJzZWRhdGUoc3RhcnQpCiAgICBldCA9IHBhcnNlZGF0ZShlbmQpCiAgfQogICgocCA9IHBhcnNlZGF0ZSgkMCkpID49IHN0KSAmJiAocCA8PSBldCknIDw8XDoKWzAxOjAxOjAxOjAwMV1bMzEtMTItMjAyM10gRmlyc3QgbG9nIGxpbmUKWzAyOjAyOjAyOjAwMl1bMDEtMDEtMjAyNF0gU2Vjb25kIGxvZyBsaW5lClswMzowMzowMzowMDNdWzMxLTEyLTIwMjRdIFRoaXJkIGxvZyBsaW5lClswNDowNDowNDowMDRdWzAxLTAxLTIwMjVdIEZvdXJ0aCBsb2cgbGluZQo6Cg==