grep для escape-кода ANSI

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

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

 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 , на всякий случай кому-то интересно.

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

  • egrep regular expression - одно и то же слово в начале и в конце
  • как grep определенная строка в случайном столбце
  • Почему «grep». * «файл» работает и «grep. * файл« нет »?
  • Совпадение простого регулярного выражения
  • Печать текста между многострочными разделителями
  • Как добавить строку с тире?
  • список файлов в каталоге без перечисления в текущем каталоге
  • GREP исключает первые 11 значений
  • 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 - лучшая ОС в мире.