Для тех, кто ищет простой ответ, просто используйте префикс + : , затем введите панель захвата -S -3000
+ return (Замените 3000
тем количеством строк, которое вы хотите сохранить.) Это копирует эти строки в буфер.
Затем, чтобы сохранить буфер в файл, просто используйте префикс + : еще раз и введите save-buffer filename.txt
+ ] return , заменив filename
на что угодно.
(По умолчанию префикс равен ctrl + b .)
Попробуйте это.
#!/bin/bash
#
yesterday=$(date --utc --date 'yesterday' +'%Y-%m-%d')
for hour in {0..23}
do
printf "https://abcd.com/logs?start=%sT%02d:00:00Z&end=%sT%02d:59:59Z\n" $yesterday $hour $yesterday $hour
done
Случайные високосные секунды не обрабатываются. Если вам это нужно, используйте этот более сложный код, где последний диапазон дня, возможно, должен перейти от 23:00:00
к 23:59:60
, но убедитесь, что ваше целевое приложение также может обрабатывать это:
#!/bin/bash
#
yesterday=$(date --utc --date 'yesterday' +'%Y-%m-%d')
leapsecond=$(date --utc --date @$(( $(date --utc --date '00:00:00' +%s) -1 )) +'%S')
lastsecond=59
for hour in {0..23}
do
[[ hour == 23 ]] && lastsecond=$leapsecond
printf "https://abcd.com/logs?start=%sT%02d:00:00Z&end=%sT%02d:59:%02dZ\n" $yesterday $hour $yesterday $hour $lastsecond
done
Я получаю ожидаемый результат.
#!/bin/bash
for i in {00..23}
do FROM_DATE=$(date -u -d "1 day ago" +%Y-%m-%d"T"$i":00:00Z")
echo "FROM_DATE:" $FROM_DATE | tr -d '\r'
TO_DATE=$(date -u +%Y-%m-%d"T"$i":59:59Z" -d "1 day ago")
echo "TO_DATE : $TO_DATE" | tr -d '\r'
done
Большое спасибо за помощь