Linux с заданной временной меткой, как получить временную метку X дней назад?

Чтобы избежать якорей ^$, можно использовать опцию -x.
d может быть прописной или строчной, но гласная только строчная
\B означает ноль внутри слова, поэтому предыдущий символ не является пунктуацией или пробелом:

grep -x '[Dd][aeiouy]..\Bs' file
0
11.05.2018, 12:14
1 ответ

Para empezar, su marca de tiempo está en segundos desde el 1 de enero de 1970 00 :00 :00 UTC es mi suposición, si no es así, conviértalo a eso.

Entonces, tienes que restar los segundos para los días que quieras.

stamp=1525192000
day=$((60*60*24))
echo $(($stamp - 30*$day))

Luego obtiene un tiempo de época de Unix, si eso necesita conversión a la fecha y la hora del día, es posible que deba tener en cuenta el horario de verano, y ahí es donde es posible que deba usar la utilidad date.

Tenga en cuenta que también puede usar date. Esto le permite trabajar fácilmente con otros elementos de fecha, sin necesidad de cálculo:

Con GNUdate:

date --date="$(date --iso-8601=s -d @1525192000) -30 days" +%s

Ejemplo:

 $ date --date="$(date --iso-8601=s -d @1525192000)"
 Tue, May  1, 2018  7:06:01 PM
 $ date --date="$(date --iso-8601=s -d @1525192000) -30 days"
 Wed, Apr 1, 2018  7:06:01 PM
 $ date --date="$(date --iso-8601=s -d @1525192000) -30 days" +%s
 1523466380
 $ date --date="$(date --iso-8601=s -d @1525192000) -30 days -1 week -3 months" +%s
 1514309200

En FreeBSD y macOS (el -jsignifica no intentar configurar la fecha del sistema, agradable y seguro)

date -j -f "%a %b %d %T %Z %Y" "$(date -r 1234567890)"  -v-30d "+%s"

EDITAR :Gracias, Kusalananda, OpenBSD y NetBSD no son compatibles -v.

5
28.01.2020, 02:23

Теги

Похожие вопросы