Tôi cố gắng sử dụng bash để loại bỏ các chuỗi thoát màu ANSI khỏi một chuỗi nhưng không thành công. Tôi đã thử một số mã dựa trên regex.
#!/bin/bash
Xanh lam='\033[0;34m' # Xanh lam
Xóa='\033[0m' # Đặt lại văn bản
xóaColors(){
cục bộ uncolor_string=''
local import_row='nhập lại; \N'
regex cục bộ_='(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]'
local func_def_row='def escape_ansi(dòng): \n'
cục bộ ansi_escape_row="ansi_escape=re.compile(r\'$regex_\') \n"
local return_row="return ansi_escape.sub('', line) \n"
local print_row="print escape_ansi(line = '$1')"
mã cục bộ="$import_row$func_def_row$ansi_escape_row$return_row$print_row"
tiếng vang $(python -c $code)
}
str="Nhấn phím ${Blue}bất kỳ${Clear} để tiếp tục..."
tiếng vang -e "$str"
removeColors "$str"
Tôi vẫn nhận được mã dưới đây.
Tệp "<chuỗi>", dòng 1
nhập khẩu
^
Lỗi cú pháp: cú pháp không hợp lệ
Bạn có thể giúp tôi được không?
Cập nhật:
Tôi tìm thấy thư viện python dải-ansi.
xóaColors(){
cục bộ uncolor_string=''
cục bộ ansi_snippet="$1"
echo "$(python3 -c " from strip_ansi import strip_ansi; print(strip_ansi(\"$ansi_snippet\"))")"
}
Tuy nhiên, ngay cả sau khi cài đặt nó, tôi nhận được lỗi bên dưới:
Traceback (cuộc gọi gần đây nhất cuối cùng):
Tệp "<string>", dòng 1, trong <module>
ModuleNotFoundError: Không có mô-đun nào có tên 'strip_ansi'