Баш обнаруживает искусство ascii

Для сценария bash существует ли простой способ определить, содержит ли текст ascii art?

Пример искусства ascii: введите описание изображения здесь

  • Использование аргументов команды sed для совместимости с GNU и BSD Unix (редактирование на месте)
  • Как удалить английские символы из строки
  • сценарий оболочки для создания каталогов, подкаталогов и файлов по шаблону
  • Как отключить, как часто передаются строки вывода?
  • Простой скрипт запуска не работает
  • Общение с bash с помощью grunt shell
  • Как получить последние пять рабочих дней в сценарии оболочки Unix, используя цикл `for`?
  • Повторно активировать сохраненный pid окна с помощью xdotool
  • One Solution collect form web for “Баш обнаруживает искусство ascii”

    Во-первых, есть проблема: вы не упомянули кодировку в своем вопросе, что заставляет меня думать, что вы не знаете, как это влияет на это. Кодировки символов определяют значение отдельных байтов. Это означает, что нам нужно начать с небольшого урока истории, и ответ на вопрос, легко ли это или нет, уже «нет».

    Ваш пример технически не ASCII. Расширенные символы, которые вы обсуждаете, впервые появились в IBM Code Page 437 (известные под разными названиями, такими как CP437, OEM 437 и IBM437), но они не были частью более часто используемых наборов символов Интернета (например, ISO 8859-1 AKA Latin-1), пока UTF-8 не станет стандартом де-факто. UTF-8 привел этих персонажей обратно в виде элементов блока и символов рисования . Следует отметить, что блоки Unicode, о которых я упоминал, содержат символы, которые первоначально не присутствовали в CP437, что делает поддержку шрифтов пятнистой.

    При таком понимании мы можем разбить это на два шага:

    1. Определите, какую кодировку должен интерпретировать поток байтов.
    2. Определите, какие комбинации байтов вам «интересны».

    Как уже указывали другие, невозможно обнаружить, что обычно используемые текстовые символы (т.е. в основном что-либо в кодировке Latin-1, включая 7-битный набор ASCII) должны интерпретироваться как художественные. Есть диапазоны символов, которые вы можете проявлять больше, чем обычно, из-за гораздо большей вероятности того, что они используются в искусстве.

    Ради здравого смысла каждого, я собираюсь предположить, что мы обсуждаем UTF-8 здесь. Раскрывая приведенный вами пример, мы видим символы из следующих блоков Unicode:

    • Геометрические фигуры
    • Блочные элементы (о которых мы говорили ранее)

    Отсюда все, что касается реализации. Вам нужно изучить каждый символ и определить, попадают ли они в блок Unicode, который вас интересует. Выполнение этого вручную без опыта может быть сложным, поскольку UTF-8 является многобайтовой кодировкой: это означает, что отдельные символы вне основного 7-битного набора ASCII представлены более чем одним байтом. Использование программного обеспечения, которое поддерживает UTF-8, значительно упростит это. Я не рекомендую это использовать с помощью bash поскольку подразумевается название вашего вопроса.

    Linux и Unix - лучшая ОС в мире.