ฉันพยายามใช้ bash เพื่อแยกลำดับการหลีกสี ANSI ออกจากสตริงโดยไม่สำเร็จ ฉันลองใช้โค้ดที่ใช้ regex แล้ว
#!/bin/bash
สีน้ำเงิน='\033[0;34m' # สีน้ำเงิน
Clear='\033[0m' # รีเซ็ตข้อความ
ลบสี (){
uncoloured_string='' ท้องถิ่น
local import_row='นำเข้าใหม่; \n'
regex_='(\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 $code)
}
str="กด ${Blue}ปุ่มใดก็ได้${Clear} เพื่อดำเนินการต่อ..."
เสียงสะท้อน -e "$str"
ลบสี "$str"
ฉันยังคงได้รับรหัสด้านล่าง
ไฟล์ "<string>" บรรทัดที่ 1
นำเข้า
^
SyntaxError: ไวยากรณ์ไม่ถูกต้อง
คุณสามารถช่วยฉันได้ไหม?
อัปเดต:
ฉันพบห้องสมุดหลาม แถบ-ansi.
ลบสี (){
uncoloured_string='' ท้องถิ่น
ansi_snippet ท้องถิ่น = "$1"
echo "$(python3 -c "จาก strip_ansi นำเข้า strip_ansi; พิมพ์(strip_ansi(\"$ansi_snippet\"))")"
}
อย่างไรก็ตาม แม้หลังจากติดตั้งแล้ว ฉันได้รับข้อผิดพลาดด้านล่าง:
Traceback (การโทรครั้งล่าสุดล่าสุด):
ไฟล์ "<string>" บรรทัดที่ 1 ใน <โมดูล>
ModuleNotFoundError: ไม่มีโมดูลชื่อ 'strip_ansi'