Использование bash-теста:
if [[ "$(LC_TIME=C date +%A)" == 'Thursday' && "$(date +%d)" -le 7 ]]; then
exit 1
fi
Примечание. :Функционально это ничем не отличается от теста в вашем вопросе.
Просто добавьте это в начало скрипта. Если это первый четверг месяца, скрипт сразу закроется, в противном случае он запустится.
В качестве альтернативы вы можете поместить его прямо в запись crontab, что-то вроде:
0 1 * * 1,4 [[ "$(LC_TIME=C date +\%A)" == 'Thursday' && "$(date +\%d)" -le 7 ]] || /path/to/script.sh
Лучше использовать awk для этого варианта использования в качестве инструмента обработки текста. А пока вы можете использовать вышеуказанное для поиска того, что вы ищете (обратите внимание, что это будет работать только с вашим списком):
sed -n '/200[0-9]/p' file
-n : will suppress the complete file output
p command : is used to print the matching pattern
С AWK(предположим, что столбцы разделены вкладкой):
awk -F '\t' '{if($4 >= 2000 && $4 <= 2009 ) {print $0}}' file
Если это поля с фиксированной шириной -и все символы имеют ширину один и только один (, нет символов нулевой ширины, символов двойной ширины -и управляющего символа, такого как TAB ), вы можете делать:
<your-file grep -E '^.{38}200[0-9] '
Предположим, что поле года начинается со столбца 39.
То есть ищите строки, которые начинаются(^
)с 38
символов (.
), за которыми следует 200, за которым следует символ в диапазоне от 0 до 9, за которым следует пробел.
Вместо использования sed я рекомендую использовать grep.
Запустить в терминале :cat YOURFILE | grep ГОД
Замените YOURFILE именем вашего файла. Замените YEAR на год, в котором вы хотите увидеть все игры, выпущенные в этом году.
Надеюсь, это поможет!