awk grep cut

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