Чтобы избежать якорей ^$
, можно использовать опцию -x
.
d
может быть прописной или строчной, но гласная только строчная
\B
означает ноль внутри слова
, поэтому предыдущий символ не является пунктуацией или пробелом:
grep -x '[Dd][aeiouy]..\Bs' file
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 -j
significa 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
.