Нужна помощь с командой sed

Использование 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
-3
07.11.2020, 21:30
3 ответа

Лучше использовать 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  
4
18.03.2021, 22:51

Если это поля с фиксированной шириной -и все символы имеют ширину один и только один (, нет символов нулевой ширины, символов двойной ширины -и управляющего символа, такого как TAB ), вы можете делать:

<your-file grep -E '^.{38}200[0-9] '

Предположим, что поле года начинается со столбца 39.

То есть ищите строки, которые начинаются(^38символов (.), за которыми следует 200, за которым следует символ в диапазоне от 0 до 9, за которым следует пробел.

2
18.03.2021, 22:51

Вместо использования sed я рекомендую использовать grep.

Запустить в терминале :cat YOURFILE | grep ГОД

Замените YOURFILE именем вашего файла. Замените YEAR на год, в котором вы хотите увидеть все игры, выпущенные в этом году.

Надеюсь, это поможет!

0
18.03.2021, 22:51

Теги

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