Armazena a saída grep com a formatação de um arquivo

2

Eu quero armazenar o resultado de grep em um arquivo com a formatação da mesma maneira que a saída no Konsole (Kubuntu). Tentei salvá-lo em um documento do LibreOffice, mas o resultado não é diferente do resultado no arquivo de texto. Como faço para armazenar o resultado no arquivo com a formatação? Quero dizer, como faço para armazenar o resultado com a saída colorida?

    
por Parth Shah 27.10.2012 / 07:20

2 respostas

1

Para preservar as cores, use --color=always

grep --color=always "pattern" file.txt > newfile.txt

Da página do manual:

--color[=WHEN], --colour[=WHEN]
      Surround the matched (non-empty) strings, matching lines, context  lines,  file  names,
      line  numbers,  byte  offsets,  and separators (for fields and groups of context lines)
      with escape sequences to display them in color on the terminal.  The colors are defined
      by   the   environment  variable  GREP_COLORS.   The  deprecated  environment  variable
      GREP_COLOR is still supported, but its setting does not have priority.  WHEN is  never,
      always, or auto.
    
por 27.10.2012 / 07:30
1

Por padrão, grep desativa a formatação de cores ao direcionar ou redirecionar. Você pode forçá-lo a dar saída formatada em cores com a opção --color=always :

grep --color=always "pattern" infile > outfile

A informação da cor aparecerá como um grupo de caracteres escapados. Caso você queira remover os caracteres de escape mais tarde, aqui está um comando shell bacana com sed para fazer exatamente isso:

sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"

(Note, no OS X, use sed -E "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" )

    
por 27.10.2012 / 08:09

Tags