Сегодняшняя дата:
DATE=$(date +%Y-%m-%d)
echo $DATE
2018-09-26
У меня есть этот awk-скрипт с именем z.awk:
{
orig = $0
sched = ""
for (i=NF; i>0; i--)
{
if ( sub(/^t:/,"",$i) )
{
sched = $i
#print sched
break
}
else if ( sub(/^due:/,"",$i) )
{
sched = $i
}
}
$0 = orig
}
sched == date
ФАЙЛ ДАННЫХ (./t):
33 (A) How to build a time machine t:2018-09-27 due:2018-09-26
02 (A) Search the IT Jobs due:2018-09-20
32 (B) AWS Cost Explorer +customerX due:2018-09-26
05 (B) Barclays Gaget Protection t:2018-09-24
37 (B) Barclay’s App Reregister t:2018-09-24 due:2018-09-22
34 (B) Book winter sun flights t:2018-09-25 due:2018-09-25
03 (B) Buy Raspberry Pi 3 t:2018-09-22
04 (B) Buy Vaporizer +health @web t:2018-09-27 due:2018-09-22
38 (B) Dr Apt - Change dates! t:2018-09-29
КОМАНДА:
cat ./t | awk -v date="$(date +%Y-%m-%d)" -f z.awk
ВЫХОД:
32 (B) AWS Cost Explorer +customerX due:2018-09-26
КОМАНДА:
grep -e "t:$DATE" -e "due:$DATE" ./t
ВЫХОД:
33 (A) How to build a time machine t:2018-09-27 due:2018-09-26
32 (B) AWS Cost Explorer +customerX due:2018-09-26
GREP делает логическийИЛИ сравнение и дает мне дополнительную строку вывода, которая (текущая дата: дата), в которой я не заинтересован, так как я отложил эту задачу до завтра сейчас - кнопка повтора.
С помощью скрипта AWK данные из моего реального несанализованного списка задач не дают мне выходных данных при сравнении, равном сравнению ("sched == date"), где, как и на предоставленных данных списка очищенных задач, это работает,То же самое относится к значению, большему или равному «sched> date», всегда дополнительно даёт мне сегодняшнюю дату.
ОРИГИНАЛЬНЫЙ ВОПРОС:
Это правильный способ сравнения строковых переменных даты илиесть лучший способ?
ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ
Хорошо, я обнаружил проблему: мои примеры данных не полностью отражают то, что на самом деле выполняет выполняемый мной скрипт todo.txt-cli.
Моя команда на самом деле:
todo.sh ls | awk -v date="$(date +%Y-%m-%d)" -f z.awk.
Джина Трапани * Удивительно Формат todo.txt Менеджер списков задач ( Задача.sh ) выводит символы ANSI COLOR в начале и конце каждой строки, например так:
^[[0;32m40 (B) A/C Fixed? +fittings @web @cal^[[0m
^[[0;32m4343 (B) Pay Rent +finance @web t:2018-09-27 due:2018-09-26^[[0m
^[[0;32m42 (B) Make Calls +workship @call t:2018-09-27^[[0m
^[[0;32m41 (B) Flying Lessons - Book +sports @apts due:2018-09-27^[[0m
Так что я предполагаю, что скрипт awk должен игнорировать символы конца строки "^ [[0m", когдаделать операции сравнения?