Вопрос пользователя:
Ответ нейросети:
, которая извлекает из лог-файла строки, соответствующие заданному временному диапазону.
Пример функции:
package main
import (
"bufio"
"fmt"
"os"
"strings"
"time"
)
func ExtractLog(inputFileName string, start, end time.Time) ([]string, error) {
file, err := os.Open(inputFileName)
if err != nil {
return nil, err
}
defer file.Close()
var result []string
scanner := bufio.NewScanner(file)
for scanner.Scan() {
line := scanner.Text()
if len(line) < 10 {
continue
}
dateStr := line[:10]
date, err := time.Parse("02.01.2006", dateStr)
if err != nil {
continue
}
if date.After(start) && date.Before(end) {
result = append(result, line)
}
}
if err := scanner.Err(); err != nil {
return nil, err
}
return result, nil
}
func main() {
start := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC)
end := time.Date(2022, time.January, 31, 23, 59, 59, 0, time.UTC)
lines, err := ExtractLog("logfile.txt", start, end)
if err != nil {
fmt.Println("Error:", err)
return
}
for _, line := range lines {
fmt.Println(line)
}
}
В данном примере функция ExtractLog открывает файл с именем inputFileName, считывает его построчно и проверяет каждую строку на соответствие временному диапазону от start до end. Если строка начинается с даты в формате dd.MM.YYYY и эта дата попадает в указанный диапазон, то строка добавляется в результирующий массив. В конце функция возвращает массив строк, соответствующих заданному временному диапазону.
Обратите внимание: ответы, предоставляемые искусственным интеллектом, могут не всегда быть точными. Не рассчитывайте на них в критически важных областях, таких как медицина, юриспруденция, финансы или в вопросах, связанных с безопасностью. Для важных решений всегда обращайтесь к квалифицированным специалистам. Администрация сайта не несет ответственности за контент, сгенерированный автоматически.