Grep/awk mayor que la fecha
cut (2)
Estoy seguro de que es fácil para los Gurus. Estoy trabajando en mi sistema de hacer cosas y hacer todo. Por el momento, simplemente tengo un archivo de marcación que edito en VI y establezco etiquetas para mis cosas.
Se parece a esto
# My project | @home
- Do this this | @home
Creo que sincronizar este archivo en mis dispositivos y usar tasker / grep en android para mostrarme todo en función de dónde estoy.
Ahora llegué al escenario en el que quiero agregar cosas para hacer en el futuro, así que estaba pensando en algo así como
- Do this thing in the future | @home @2014-02-01
¿Cómo podría excluir esa línea hasta la fecha de 2014-02-01? Mi comando actual para simplemente extraer @home todos es
grep -e "@home" myfile | cut -d ''|'' -f1
Estoy convencido de que hay una forma de hacerlo, ¡pero google / stackoverflow no me ha guiado en la dirección correcta todavía!
Ayuda apreciada,
Gracias
Alan
Usando Perl
perl -MTime::Piece -ne ''
BEGIN {$now = localtime}
print unless /@(/d{4}-/d/d-/d/d)/ and $now < Time::Piece->strptime($1, "%Y-%m-%d")
'' <<END
# My project | @home
- Do this this | @home
- Do this thing in the future | @home @2014-02-01
END
# My project | @home
- Do this this | @home
Además, GNU awk
gawk ''
BEGIN {now = systime()}
match($0,/@([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])/, m) {
time = mktime(m[1] " " m[2] " " m[3] " 0 0 0")
if (time > now) next
}
1
''
Usando awk:
DAT=$(date +%Y%m%d) # get today''s date, for example 20140117
awk ''NF>3{gsub(/-/,"",$NF);if ($NF>d) next}{print $1}'' FS="[|@]" d=$DAT file
# My project
- Do this this