Preciso salvar o resultado de um comando grep em um arquivo, mas também quero que o arquivo de saída seja formatado e mantenha as cores como no terminal.
Existe uma maneira de fazer isso? Talvez faça grep salvar em algum tipo de linguagem de marcação? Se não for possível, existe outra ferramenta que pode realizar essa tarefa?
Estou tentando destacar a palavra-chave de pesquisa no arquivo de saída, exatamente como no terminal.
pygmentize
trabalha com muitas outras.Dependendo do que você deseja fazer com o arquivo de saída, é possível adicionar cores a um arquivo de texto normal, porque as cores simplesmente vêm de alguns caracteres especiais. O Grep parece não querer imprimi-los quando você o redireciona para um arquivo, então você precisa forçá-lo a:
Agora, quando você imprimir o arquivo no console, ele será impresso com as cores, porque o Bash interpreta esses caracteres como "use esta cor".
No entanto, se você o abrir em um editor como esse
vim
, obterá alguns caracteres estranhos. Por exemplo, quando eu uso os comandosA saída parece correta quando eu a imprimo usando,
cat
mas quando a abro,vim
receboPortanto, se você deseja usar um editor, provavelmente não é o que deseja.
fonte
Se entendi corretamente, você deseja salvar uma saída do terminal em um arquivo de texto, certo? Mas você quer que ele seja formatado com cores. Se for esse o caso, aqui estão minhas idéias:
Destacando a saída automaticamente
Como você provavelmente sabe, se você capturar uma saída grep em um arquivo de texto, exatamente porque é um arquivo de texto, não pode ser formatado. Então, tanto quanto eu sei, você não pode fazer isso de uma maneira fácil.
Apesar disso, existe uma solução simples, que consiste em realizar o seu editor de texto que tipo de arquivo está abrindo. Por exemplo, digamos que sua saída grep tenha alguns componentes do bash, então os destaques do bash funcionam para você (a propósito, essas são frequentemente as cores que você vê em uma saída colorida no terminal). Portanto, o truque é salvar a saída de texto em um arquivo com a extensão adequada. Em vez de fazer algo como:
você pode ir para
O que fará com que o gedit (ou qualquer editor de texto decente) reconheça automaticamente que você está falando sobre o código bash e o realce de acordo. Você não precisa colorir a saída, o programa fará isso por você se reconhecer o tipo de código que está abrindo. Se você estiver trabalhando com outro tipo de formato, apenas adapte a extensão àquela que melhor se ajusta ao que você está usando (por exemplo,> output.xml,> output.html,> output.py ... etc). Boa sorte! :)
Destacando algumas palavras no arquivo de saída
Então, se eu entendi, você deseja destacar as palavras que procurou. Novamente, isso não pode ser feito em um arquivo de texto sem formatação apenas porque é um texto sem formatação. No entanto, você pode adicionar algum formato a ele de uma maneira muito fácil, como usar alguma codificação html. Isso transformará sua saída em um código html, e quando você a abrir com um programa capaz de interpretar html (escritor do libreoffice, firefox e 10000 etc), você verá algumas palavras destacadas.
Para fazer isso, digamos que este seja seu grep, exportado para html:
E agora você deseja destacar o texto-chave em sua saída. Você pode usar o sed para fazer isso, como:
E violà, agora seu texto-chave está destacado em vermelho.
fonte