terminal que imprime tabulações, espaços e novas linhas como \ t \ s e \ n

4

Eu escrevi um programa terminal em c que converte as abas em espaços. E gostaria de ver que funciona e quantos espaços foram convertidos de guias. O problema é quando eu crio um arquivo chamado input.txt e canalizo para o programa, ele mostra apenas espaços em branco para as guias e espaços, em vez dos caracteres reais \ te \ s. Então, eu estou querendo saber se existe um comando de terminal existente que poderia pegar a saída do meu programa e substituir guias e espaços por \ t e \ s respectivamente:

cat input7.txt | ./detab
abc  def  

Talvez algo como:

cat input7.txt | ./detab | command
abc\s\s\sdef\s\s\s  

Esse comando já existe?

    
por JohnMerlino 30.11.2013 / 19:47

1 resposta

9

No Linux, cat -T mostra as guias como ^I . Existem outras opções para tornar aparente o espaço em branco, para exibir caracteres de controle em um formulário para impressão, etc.

Se você quiser comparar o resultado do seu programa com o original, use diff :

./detab input7.txt | diff input7.txt - | cat -T

Você também pode querer comparar a entrada do seu programa com o utilitário padrão expand .

Se você quiser exatamente a transformação de espaços em \s e as guias em \t , use sed:

sed -e 's/\/\\/g' -e 's/\t/\t/g' -e 's/ /\s/g'

(A primeira expressão dobra barras invertidas, o que torna a transformação inequívoca.)

    
por 30.11.2013 / 19:56