Я пытаюсь использовать bash для удаления escape-последовательностей цвета ANSI из строки без успеха. Я уже пробовал код на основе регулярных выражений.
#!/бин/баш
Синий='\033[0;34m' # Синий
Clear='\033[0m' # Сброс текста
удалитьЦвета(){
местный uncolored_string=''
local import_row='импортировать повторно; \n'
локальное регулярное выражение_='(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]'
local func_def_row='def escape_ansi(строка): \n'
местный ansi_escape_row="ansi_escape=re.compile(r\'$regex_\') \n"
local return_row="return ansi_escape.sub('', строка) \n"
local print_row="print escape_ansi(line = '$1')"
локальный код="$import_row$func_def_row$ansi_escape_row$return_row$print_row"
эхо $(python -c $код)
}
str="Нажмите ${Blue}любую клавишу${Clear}, чтобы продолжить..."
эхо -e "$стр"
removeColors "$str"
Я все еще получаю код ниже.
Файл "<строка>", строка 1
импорт
^
SyntaxError: неверный синтаксис
Вы можете мне помочь?
Обновлять:
Я нашел библиотеку python стрип-анси.
удалитьЦвета(){
местный uncolored_string=''
местный ansi_snippet="$1"
echo "$(python3 -c "из strip_ansi import strip_ansi; print(strip_ansi(\"$ansi_snippet\"))")"
}
Однако даже после его установки я получаю следующую ошибку:
Traceback (последний последний вызов):
Файл "<string>", строка 1, в <module>
ModuleNotFoundError: нет модуля с именем «strip_ansi»