grep для escape-кода ANSI

Я проверил множество ссылок о том, как grep отдельные escape-символы или литеральные строки, но я просто не могу их комбинировать, чтобы найти красно-красную ANSI escape-последовательность ^[41m , даже набрав ^[ как Ctrl + V + Ctrl + [ и два буквальных символа ^ + [ и использование обоих флагов -E и -F .

Необработанные байты, которые я пытаюсь найти, заданные hexdump :

  • Контекст соответствующего регулярного выражения
  • grep: Не признанный флаг в AIX
  • введите число с нулями
  • Как объединить grep с несколькими аргументами и разными выходными переключателями
  • Как найти позицию персонажа с помощью grep?
  • Сравните два файла и распечатайте общие поля и их соответствующие номера строк в 1-м файле
  •  1b 5b 33 37 6d 1b 5b 34 31 6d 30 2e 30 30 25 

    В тех случаях, когда это соответствует WHITE FOREGROUND RED BACKGROUND WHITE FOREGROUND 0.00% . Я создаю эти коды с пакетом Fore.WHITE+Back.RED Python и Fore.WHITE+Back.RED , на всякий случай кому-то интересно.

    Итак, в чем секрет, который мне не хватает?

  • Извлечь данные из строки и добавить к линии?
  • Найти и удалить много файлов по определенному контенту
  • Solaris grep и регулярные выражения?
  • Как grep две строки из lshw?
  • Сопоставьте шаблон и замените первый экземпляр строки после нее
  • Как считать события фразы в grep, игнорируя случай?
  • One Solution collect form web for “grep для escape-кода ANSI”

    но я просто не могу заставить их объединиться, чтобы найти фона-красный escape-последовательность ANSI ^ [41m

    Если вы используете vim для открытия этого файла, вы узнаете, что это не ^ [41m , а это ^ [[41m , which ^ [ перемещаться по клавише со стрелкой как набор:

    введите описание изображения здесь

    1bEscape представляет собой одиночный escape-символ ^[ который может быть вызван Ctrl + V, следуя Esc . ^[ выглядите как 2 символа, но это не так, это одно:

     xb@dnxb:~/Downloads/grep$ ascii 1b ASCII 1/11 is decimal 027, hex 1b, octal 033, bits 00011011: called ^[, ESC Official name: Escape xb@dnxb:~/Downloads/grep$ 

    Сделайте это (используйте Ctrl + V, следуя Esc, чтобы создать ^[ , затем непрерывно напечатайте \[41m ):

     xb@dnxb:~/Downloads/grep$ hexdump -C /tmp/2 00000000 1b 5b 33 37 6d 1b 5b 34 31 6d 30 2e 30 30 25 0a |.[37m.[41m0.00%.| 00000010 xb@dnxb:~/Downloads/grep$ \grep '^[\[41m' /tmp/2 0.00% xb@dnxb:~/Downloads/grep$ \grep '^[\[41m' /tmp/2 | hexdump -C 00000000 1b 5b 33 37 6d 1b 5b 34 31 6d 30 2e 30 30 25 0a |.[37m.[41m0.00%.| 00000010 xb@dnxb:~/Downloads/grep$ 

    Убедитесь, что вы избегаете grep с помощью префикса \ чтобы избежать его алиаса – --color :

    введите описание изображения здесь

    [Альтернатива]:

    1. \grep -P '\e\[41m' (кредит: комментарий OP)
    2. \grep '^[\[41m' , которые используют Ctrl + V, следуют Ctrl + [ для создания ^[ . Полезно, когда backspace на моей клавиатуре не 0x08, но я могу использовать Ctrl + V, следуя Ctrl + H (^ H получить из ascii 08 ), чтобы создать его.
    Linux и Unix - лучшая ОС в мире.