Eu tenho algum script que produz saída com cores e preciso remover os códigos ANSI.
#!/bin/bash
exec > >(tee log) # redirect the output to a file but keep it on stdout
exec 2>&1
./somescript
A saída é (no arquivo de log):
java (pid 12321) is running...@[60G[@[0;32m OK @[0;39m]
Eu não sabia como colocar o caractere ESC aqui, então coloquei @
em seu lugar.
Eu mudei o script para:
#!/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"
Mas agora ele me fornece (no arquivo de log):
java (pid 12321) is running...@[60G[ OK ]
Como também posso remover isso ' @[60G
?
Talvez haja uma maneira de desativar completamente a coloração de todo o script?
strip-ansi
: github.com/chalk/strip-ansi .