Tira a cor no OS X com o BSD sed (ou qualquer outra ferramenta)

5

Eu estou no OS X, que tem uma versão BSD de sed (que eu acho que é inferior a uma versão GNU no Linux), e todas as técnicas para remover cores em commandlinefu.com não funcionou. Eu tentei substituir a opção -r (inexistente no OS X) por -e , mas isso não ajudou.

Existe alguma maneira confiável de remover códigos de formatação de cores no OS X? Aqui está o comando que estou executando que precisa de saída de cores removida:

for concurrency in $(seq 1 50); do siege -f urls.txt -c $concurrency -t 5m >> results.csv ; done

e aqui está um exemplo de como usar sed para remover a cor da saída do CSV:

for concurrency in $(seq 1 50); do siege -f urls.txt -c $concurrency -t 5m | sed "s,\x1B\[[0-9;]*[a-zA-Z],,g" >> results.csv ; done
    
por iconoclast 01.07.2014 / 23:11

1 resposta

11

Com o bash, isso deve passar argumentos apropriados para o sed, eu acho:

sed $'s,\x1b\[[0-9;]*[a-zA-Z],,g'

Ou, mais portável para outros shells, você poderia tentar:

sed "s,$(printf '3')\[[0-9;]*[a-zA-Z],,g"

Ou apenas colocando um byte de escape diretamente na string digitando Ctrl-v Esc em vez de digitar \x1b .

Note, no entanto, que esta declaração sed remove mais do que apenas os códigos de cores, potencialmente - pode corresponder a muitas sequências de controle começando com um CSI. Procure na página por "CSI" em isto para ter uma idéia de quais outras seqüências de controle removeria ( ou possivelmente mangle).

    
por 01.07.2014 / 23:36

Tags