Я просто сравниваю от конца к началу из-за разделителей
awk -F[-,] '$NF >= 20 && $NF <= 30 && $(NF-1) >= 10 &&
$(NF-1) <= 12 && $(NF-2) >= 2014 && $(NF-2) <= 2016' yourfile
NF
- последнее поле, $ NF
- значение, а $ (NF-1)
- значение для поля перед последним и так далее $ NF
день, $ (NF-1)
месяц, $ (NF-2)
год Вы можете использовать тест оболочки для проверки типа файла и разрешений:
#!/bin/sh
read -rp 'Enter a filename: ' fname
if [ -f "$fname" ]; then
echo 'File is a regular file'
elif [ -d "$fname" ]; then
echo 'File is a directory'
else
echo 'File is not a regular file or a directory'
fi
[ -r "$fname" ] && read=read
[ -w "$fname" ] && write=write
[ -x "$fname" ] && execute=execute
echo "User has ${read} ${write} ${execute} permissions" | tr -s ' '
Конструкция if сообщит о типе файла, проверив, является ли он обычным файлом(-f
)или каталогом (-d
), в противном случае она сообщит, что это не так.
Затем мы проверяем различные разрешения :чтение (-r
), запись(-w
)и выполнение(-x
). Установка переменной для каждого. Если у пользователя нет одного из этих разрешений, соответствующая переменная останется неустановленной, поэтому в последней эхо-строке, если у пользователя нет этого разрешения, переменная будет расширена до нуля. Это завершено вызовом tr -s ' '
для удаления любых дополнительных пробелов, которые могут быть там из-за несуществующих разрешений.