[ ! . -sf / ] &&
mkdir ../bad &&
pax -rwls/$/.bad/ . ../bad
Это создаст зеркало жесткой ссылки на .
в ./bad
. Каждый файл, укорененный в .
впоследствии также будет найден в ../bad
, но по имени с приставкой .bad
. Если новое дерево удовлетворяет, удалите текущее дерево и mv
дерево ../bad
поверх него.
Будет проще, если даты будут в YYYYMMDD
(, тогда они будут в лексикографическом и числовом порядке ). Вы можете использовать gensub
для этого в awk. Например:
awk -F"|" -v d="$d" -v dp='(..)/(..)/(....)' 'BEGIN {gensub(dp, "\3\2\1", d)} {dt=$5; gensub(dp, "\3\2\1", dt);} dt >= d' foo
Переменная d
содержит дату для сравнения, а dp
содержит шаблон, соответствующий дате DD/MM/YYYY
. Затем с помощью gensub
мы перемещаемся по тем (\3
, \2
, \1
, которые являются согласованными группами ((....)
, вторым (..)
, первым (..)
соответственно ). То же самое с пятым полем каждой строки, которое мы копируем, чтобы избежать изменения ввода.
Я расширил ваш пример, добавив еще несколько дат:
1099511628908|Chen|Wei|female|02/08/1989|2010-05-24T20:52:26.582+0000|27.98.244.108|Firefox
1099511633435|Smith|Jack|male|19/04/1978|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1979|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1977|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1980|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/03/1978|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
И получил этот результат, используя 19/04/1978
для сравнения:
1099511633435|Smith|Jack|male|19/04/1978|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1979|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
1099511633435|Smith|Jack|male|19/04/1980|2010-05-26T03:45:11.772+0000|50.72.193.218|Internet Explorer
Как насчет
DT="01/08/1989"
awk -F\| -vDT=${DT:6}${DT:3:2}${DT:0:2} 'substr($5, 7) substr($5, 4, 2) substr($5, 1, 2) > DT' file
1099511628908|Chen|Wei|female|02/08/1989|2010-05-24T20:52:26.582+0000|27.98.244.108|Firefox