Справка со сценарием напоминания в Bash

Я сложил попытку сделать простой сценарий напоминания, который может сравнить рабочую дату с датой, которую имеет файл. например, у меня есть файл, который содержит:

Apr 25 2015 cycling \n
Apr 26 2015 football \n
.\n
.\n
.\n
.\n

я хочу сравнить рабочую дату (читающий файл линию за линией) с датой файла и если они соответствуют затем, я хочу быть распечатанным определенная строка на моем экране. можно ли помочь мне? Я так стараюсь...

1
задан 25 April 2015 в 20:09

2 ответа

Простой способ состоял бы в том, чтобы использовать grep:

date +'^%b %d %Y' | grep -f- your_file
5
ответ дан 10 November 2019 в 08:05

Используя [только 111]:

#!/bin/bash
today="$(date +"%b %d %Y")"
while IFS= read -r line; do
   [[ $line =~ ^$today ]] && echo "$line"
done </path/to/file.txt
  • today переменная хранит отформатированную дату того дня

  • while IFS= read -r line, считает каждую строку от file.txt и сохранит его, поскольку переменная line

  • [[ $line =~ ^$today ]] протестирует, если эти line запустился с сегодняшней даты

  • && echo "$line", распечатает line, если предыдущая команда возвратит код выхода 0, т.е. предыдущее условие верно.

3
ответ дан 10 November 2019 в 08:05

Другие вопросы по тегам:

Похожие вопросы: