Форум — Admin Шаблон с исключением? Или как? bash, script, шаблон 0 1 Приветствую.Результат команды может быть: 21 ФАЙЛ Но может быть: 11 ФАЙЛОВ То есть просто шаблон: *1 не подойдет. Как правильно исключить 21 из *1? Ссылка
[^2]1В man bash ищи Pattern Matching. deadNightTiger ★★★★★ (07.10.18 11:45:29 MSK) Показать ответы Ссылка
Ответ на: комментарий от deadNightTiger 07.10.18 11:45:29 MSK На самом деле не всё так просто. Там надо исключать одиннадцать, а не двадцать один, ибо дальше — больше.1..∞1 — файл, но не 11; [2-4]..∞[2-4] — файла, но не 12; *..∞* — файлов. r3lgar ★★★★★ (07.10.18 12:35:10 MSK) Последнее исправление: r3lgar 07.10.18 12:35:26 MSK (всего исправлений: 1) Показать ответ Ссылка
Ответ на: комментарий от r3lgar 07.10.18 12:35:10 MSK *11-*19 файлов, *1 файл, *2-*4 файла, * файлов. Матчить по порядку, прекращать при сработке. Провернуть это в баше будет та еще затея. Алсо, не парь мозги и пиши просто «файл(-ов)». Как правильно исключить 21 из *1?echo 21 | grep -v '21$' echo $? anonymous (07.10.18 14:59:52 MSK) Показать ответы Ссылка
Ответ на: комментарий от anonymous 07.10.18 14:59:52 MSK Алсо -> Алсо, тс anonymous (07.10.18 15:01:37 MSK) Ссылка
Ответ на: комментарий от anonymous 07.10.18 14:59:52 MSK Алсо, не парь мозги и пиши просто «файл(-ов)».Я вообще обычно пишу "files: %d" и не напрягаюсь, но ТС хочет.Провернуть это в баше будет та еще затея.Это проблема ТСа, не моя. (% r3lgar ★★★★★ (07.10.18 15:39:13 MSK) Ссылка
Ответ на: комментарий от deadNightTiger 07.10.18 11:45:29 MSK [^2]1Помогло разобраться, спасибо. На самом деле не всё так просто. Там надо исключать одиннадцать, а не двадцать один, ибо дальше — большеДа, так и есть. Решил через переменные в условиях, всем спасибо. mexx ★ (07.10.18 19:44:29 MSK) автор топика Ссылка
Ответ на: комментарий от anonymous 07.10.18 14:59:52 MSK Алсо, не парь мозги и пиши просто «файл(-ов)»Всё у вас в этих ваших интернетах абы как ))) mexx ★ (07.10.18 20:29:13 MSK) автор топика Ссылка
case 11|12|17) echo сперва фильтруем исключение из правил ;; ... *1|*4) echo или говорим, что "исключение подтверждает правило" ;; esac anonymous (07.10.18 21:01:40 MSK) Показать ответ Ссылка
Или как man ngettext ngettext nautilus 'Extract %d file' 'Extract %d files' $NUMBER | sed -e "s/.*%d/$NUMBER/" DonkeyHot ★★★★★ (08.10.18 08:42:56 MSK) Ссылка
Ответ на: комментарий от anonymous 07.10.18 21:01:40 MSK Да, с case стало еще оптимальнее, спасибо.case $COM in 1|*[!1]1) echo "ФАЙЛ" ;; [2-4]|*[!1][2-4]) echo "ФАЙЛА" ;; *) echo "ФАЙЛОВ" ;; esac mexx ★ (08.10.18 13:37:56 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от mexx 08.10.18 13:37:56 MSK Интересно сравнить по скорости с: case "0$1" in *[^1]1) echo файл;; *[^1][2-4]) echo файла;; *) echo файлов;; esac (что оптимальнее — я не знаю) :) vodz ★★★★★ (08.10.18 23:17:39 MSK) Показать ответы Ссылка
Ответ на: комментарий от vodz 08.10.18 23:17:39 MSK В данном случае скорость не имеет значения. Совсем.Однако:*[^1]1) echo файл;; *[^1][2-4]) echo файла;; *) echo файлов;; - неверно обработает 1 ФАЙЛ, 2 ФАЙЛА, 3 ФАЙЛА и 4 ФАЙЛА - напишет ФАЙЛОВ. Или о чем вопрос? mexx ★ (09.10.18 20:43:18 MSK) автор топика Показать ответы Ссылка
Ответ на: комментарий от mexx 09.10.18 20:43:18 MSK Или о чем вопрос?Внимательнее посмотрите на первую строку моего решения. vodz ★★★★★ (09.10.18 20:45:19 MSK) Показать ответы Ссылка
Ответ на: комментарий от vodz 09.10.18 20:45:19 MSK Внимательнее посмотрите на первую строку моего решения.Не понимаю.Результат моей команды = число.Смысл в: "0$1" какой?На выходе число 3. Оно будет обработано НЕ верно.Я не спорю, просто НЕ понимаю. Буду признателен за пояснение. mexx ★ (10.10.18 19:31:09 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от mexx 10.10.18 19:31:09 MSK Число 3 превращается в 03 и обрабатывается верно. legolegs ★★★★★ (10.10.18 22:11:41 MSK) Показать ответ Ссылка
Ответ на: комментарий от legolegs 10.10.18 22:11:41 MSK Про 'превращается' понятно. Но в обработку оно поступает именно как '03' и обрабатывается неправильно, то есть как '3 ФАЙЛОВ'. mexx ★ (10.10.18 23:56:04 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от mexx 10.10.18 23:56:04 MSK Запусти да проверь. Срабатывает вторая ветка case. legolegs ★★★★★ (11.10.18 00:31:14 MSK) Ссылка
Ответ на: комментарий от vodz 09.10.18 20:45:19 MSK Внимательнее посмотрите на первую строку моего решенияДа, всё правильно, интересно, спасибо. Запусти да проверьС этого и начал, но ошибся в проверочной команде, бывает. mexx ★ (11.10.18 08:49:32 MSK) автор топика Ссылка
Ответ на: комментарий от mexx 09.10.18 20:43:18 MSK В данном случае скорость не имеет значения.Я люблю извращения. Вот, например, [2-4] и [234]. Второе, мне кажется, оптимальнее. vodz ★★★★★ (11.10.18 11:06:08 MSK) Ссылка
Ответ на: комментарий от vodz 08.10.18 23:17:39 MSK (что оптимальнее — я не знаю) :)С помощью 'date +%s%6N' вот так:=== Вариант 'mexx' для "500" файлов === 820 796 775 774 769 753 745 736 728 723 === Вариант 'vodz' для "500" файлов === 772 762 756 754 753 745 742 739 719 713 Вот, например, [2-4] и [234]. Второе, мне кажется, оптимальнее=== Вариант 'vodz' для "3" файлов с '[234]' === 735 720 682 677 672 658 658 641 620 602 === Вариант 'vodz' для "3" файлов с '[2-4]' === 779 769 756 754 746 741 735 726 714 695 mexx ★ (11.10.18 20:16:40 MSK) автор топика Показать ответ Ссылка
Ответ на: комментарий от mexx 11.10.18 20:16:40 MSK Ну это не серьёзно. Есть же встроенная в bash «time» vodz ★★★★★ (12.10.18 10:13:45 MSK) Последнее исправление: vodz 12.10.18 10:13:54 MSK (всего исправлений: 1) Показать ответ Ссылка
Ответ на: комментарий от vodz 12.10.18 10:13:45 MSK То, что уже было под рукой ) mexx ★ (12.10.18 12:49:56 MSK) автор топика Ссылка