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

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

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

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 поскольку подразумевается название вашего вопроса.

  • использование функции скрипта вместо ввода с клавиатуры
  • Измените только расширение файла
  • Как установить пары фиксированного значения, вертикально ориентированные пары ключ-значение в файле CSV?
  • Список файлов на основе даты и времени в имени файла
  • Текстовый интерфейс пользователя
  • Ошибка при замене части команды curl переменной
  • Что я должен рассмотреть, чтобы написать сценарий, который реагирует на нажатие клавиши?
  • Как я мог перевернуть содержимое двоичного файла с помощью команд bash
  • Ошибка при присвоении текущей директории переменной
  • Как заменить все первые вхождения в совпадающие строки с инкрементным числом?
  • Сценарий Bash для вывода пути на флеш-накопитель USB
  • Linux и Unix - лучшая ОС в мире.