0 votos

Cómo encontrar todos los Sun Sat en la línea de comandos

Esto funciona en Ubuntu pero no en Mac.

$ seq -f %1.0f 20210101 20211231 | date -f - 2>/dev/null | grep 'Sun\|Sat'
...
Sat Dec 18 00:00:00 JST 2021
Sun Dec 19 00:00:00 JST 2021
Sat Dec 25 00:00:00 JST 2021
Sun Dec 26 00:00:00 JST 2021

¿Cómo encontrar todos los sábados y domingos desde la línea de comandos?

2voto

La versión MacOS/BSD de date no puede leer de la entrada estándar, por lo que hay que hacer un bucle manualmente.

for d in $(seq -f %1.0f 20210101 20211231); do 
    date -jf "%Y%m%d" $d 2>/dev/null | grep 'Sat\|Sun'
done

Puede evitar la mayoría de las fechas imposibles creadas por seq (y obtener el resultado más rápido) ejecutando

for m in {01..12}; do
    for d in {01..31}; do
        date -jf "%Y%m%d" "2021${m}${d}" 2>/dev/null
    done
done | grep 'Sat\|Sun'

0 votos

Gracias. Como has comentado la segunda es mucho más rápida. No sabía que la versión MacOS/BSD de date no puede leer desde la entrada estándar.

1 votos

@shin Encuentro las páginas Man (por ejemplo man date ) para ser extremadamente útil cuando se portan shell scripts de Linux.

0 votos

Los comentarios no son para ampliar la discusión; esta conversación ha sido trasladado al chat .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X