Я собираю учебный проект, в котором студенты будут переопределять утилиту grep в python.Одна функция, которую я хотел реализовать, - это способность grep выводить соответствующий текст в цвете.Для этого я использовал escape-последовательности ANSI:
# min_example.py
START = '\033[91m'
END = '\033[0m'
some_line = f'this is {START}matching{END} text'
print(some_line)
Это работает точно так, как ожидалось.Однако при передаче вывода в текстовый файл включаются необработанные escape-последовательности:
$ python min_example.py > test.txt
$ vi test.txt
this is ^[[91mmatching^[[0m text
Реальной утилите grep удается вывести цвет на терминал, но ее вывод можно перенести в текстовый файл без каких-либо непонятных символов escape-последовательности.
Итак, мой вопрос: что здесь делает grep по-другому, и как я могу воспроизвести его так, чтобы я мог выводить цвет, но при этом иметь «трубу»"вывод?