Alguma ideia do que poderia estar causando isso? Sem usar o grep, as únicas coisas exibidas são os códigos ISO e o espaço vazio.
Comando:./trans --id --input /path/to/txt | grep ISO | grep [a-z]
root@box /test # alias grep
alias grep='grep --color=auto'
root@box /test # type grep
grep is aliased to `grep --color=auto'
Saída normal:
A captura de tela parece mostrar códigos de cores ANSI mutilados , que controlam a renderização do texto. O texto em negrito/brilhante é produzido com a sequência
␛[1m
, que geralmente é interpretada pelo seu terminal e não exibida diretamente na tela: apenas torna o próximo trecho de texto brilhante. A captura de tela dagrep
saída não solicitada mostra a diferença de cor entre os rótulos e os valores em cada linha, portanto, a saída original os está usando.Parece que essa sequência foi quebrada pelo seu final
grep
, que correspondeu ao "m" no código (já que é uma letra[a-z]
) e tentou destacá-lo em vermelho. Isso deixou uma sequência de escape parcial para trás, que seu terminal não conseguiu processar.O caractere de escape
␛
é U+001B, que é o número hexadecimal renderizado nas caixas de caracteres desconhecidos. O que é exibido é o escape (a caixa), um[
, um1
, um vermelhom
seguido pelo texto correspondente esperado "eng" e o mesmo acontecendo no final com "22" (o código numérico para "cor e intensidade normais").A saída quebrada é realmente:
where
␛[31m
torna o texto vermelho e␛[22m
o torna branco novamente, ambos inseridos aogrep
redor dosm
caracteres no texto original. O original era apenas:que é apenas brilhante "
eng
" e, em seguida, voltar ao texto normal.Você pode verificar isso alterando seu final
grep
emgrep --color=always
e canalizando parahexdump
, que mostrará todos os caracteres não imprimíveis e os interpretados pelo seu terminal.Você pode lidar com isso de algumas maneiras. Uma é usar
grep
sem seu alias no momento:A barra invertida pula temporariamente o alias e é executado
grep
diretamente.Outra é retirar os códigos ANSI do comando original, para o qual existem algumas sugestões nesta questão :
Ainda outra opção é adicionar um tubo estranho no final:
Como a saída final
grep
não é diretamente para o TTY, mas porcat
meio de um tubo, ele não inserirá o realce colorido.Talvez a melhor opção seja fazer com que o Translate Shell pare de usar sequências de controle de terminal em sua própria saída quando não for para um terminal. Isso envolveria adequadamente um relatório de bug de você para seu (s) autor (es) e uma correção de código para a
ansi()
função Translate Shell, mas pode-se atrapalhar um pouco:Isso passa o
dumb
tipo de terminal no ambiente do Translate Shell, que pelo menos reconhece como não tendo suporte a cores ECMA-48. (Infelizmente, o Translate Shell não usa terminfo e apenas conecta em seu próprio código os tipos de terminal que ele entende e as sequências de controle que ele usa.)