Tôi có một số tập lệnh tạo đầu ra với màu sắc và tôi cần xóa mã ANSI.
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript
Đầu ra là (trong tệp nhật ký):
java (pid 12321) is running...@[60G[@[0;32m OK @[0;39m]
Tôi không biết làm thế nào để đặt ký tự ESC ở đây, vì vậy tôi đặt @
nó vào vị trí của nó.
Tôi đã thay đổi tập lệnh thành:
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"
Nhưng bây giờ nó cho tôi (trong tệp nhật ký):
java (pid 12321) is running...@[60G[ OK ]
Làm thế nào tôi cũng có thể loại bỏ điều này ' @[60G
?
Có lẽ có một cách để tắt hoàn toàn màu cho toàn bộ kịch bản?
strip-ansi
: github.com/chalk/strip-ansi .