Esta questão pergunta sobre o envolvimento do texto em uma determinada coluna, e as pessoas sugerem o uso de fold
ou fmt
, mas até onde eu posso ver, eles simplesmente contam os caracteres e não permitem caracteres não imprimíveis. Por exemplo:
fold -w 20 -s <<<'seq 1 25'
como se poderia esperar, produz:
1 2 3 4 5 6 7 8 9
10 11 12 13 14 15
16 17 18 19 20 21
22 23 24 25
mas:
fold -w 20 -s <<<^[[32m'seq 1 25'^[[m
(onde ^[
é o caractere de escape) intuitivamente deve produzir a mesma coisa em texto verde, mas produz:
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20
21 22 23 24 25
em texto verde.
Não consigo ver nenhum comutador que diga para considerar caracteres não imprimíveis e a abordagem PS1 sinalizar caracteres não imprimíveis parece não funcionar com fold
ou fmt
.
Existe algo (idealmente, algo padrão) que pode envolver o texto ao mesmo tempo em que considera caracteres não imprimíveis?
EDITAR:
O exemplo acima é realmente para simplificar e demonstrar o problema, mas posso ter simplificado demais. Para esclarecer o meu exemplo do mundo real, eu tenho o texto onde algumas palavras estão em cores (usando seqüências de escape ANSI) e eu gostaria que isso se encaixasse perfeitamente. Por exemplo:
Here is some example text that contains ^[[31mred^[[m and ^[[32mgreen^[[m words that I would like to wrap neatly.
onde ^[
é o caractere de escape.
Se eu quisesse que isso envolvesse 20 colunas, eu esperaria:
Here is some
example text that
contains red and
green words that
I would like to
wrap neatly.
(com "vermelho" e "verde" em cores), mas por causa dos códigos de escape ANSI, ele envolve:
Here is some
example text
that contains
red and
green words
that I would like
to wrap neatly.