Je dois enregistrer le résultat d'une commande grep dans un fichier, mais je souhaite également que le fichier de sortie soit formaté et conserve les couleurs, exactement comme dans le terminal.
Y-a-t-il un moyen de faire ça? Peut-être que grep save dans un langage de balisage? Si ce n'est pas possible, existe-t-il un autre outil capable d'accomplir cette tâche?
J'essaie de faire ressortir le mot clé de recherche dans le fichier de sortie, exactement comme dans le terminal.
pygmentize
fonctionne avec beaucoup d'autres.Selon ce que vous voulez faire avec le fichier de sortie, il est possible d'ajouter des couleurs à un fichier texte normal car les couleurs proviennent simplement de certains caractères spéciaux. Grep semble ne pas vouloir les imprimer quand vous le redirigez vers un fichier, vous devez donc le forcer à:
Désormais, lorsque vous imprimez le fichier sur la console, il est imprimé avec les couleurs, car Bash interprète ces caractères comme "utilise cette couleur".
Cependant, si vous l'ouvrez dans un éditeur comme
vim
, vous obtiendrez des caractères étranges. Par exemple, quand j'utilise les commandesLe résultat est correct lorsque je l’imprime avec,
cat
mais lorsque je l’ouvre,vim
j’obtiensDonc, si vous voulez utiliser un éditeur, ce n'est probablement pas ce que vous voulez.
la source
Si j'ai bien compris, vous voulez enregistrer une sortie de terminal dans un fichier texte, n'est-ce pas? Mais vous voulez qu'il soit formaté avec des couleurs. Si tel est le cas, voici mes idées:
Mettre en surbrillance la sortie automatiquement
Comme vous le savez probablement, si vous capturez une sortie grep dans un fichier texte, il est impossible de la formater, car il s’agit d’un fichier texte. Donc, autant que je sache, vous ne pouvez pas le faire facilement.
Malgré cela, il existe une solution de contournement simple, consistant à faire réaliser à votre éditeur de texte le type de fichier en cours d’ouverture. Par exemple, supposons que votre sortie grep comporte des composants bash, donc les soulignements bash fonctionnent pour vous (d'ailleurs, ce sont les couleurs que vous voyez dans une sortie colorée dans le terminal). L'astuce consiste donc à enregistrer la sortie texte dans un fichier avec l'extension appropriée. Au lieu de faire quelque chose comme:
vous pouvez aller chercher
Ce qui fera que gedit (ou tout éditeur de texte correct) reconnaît automatiquement que vous parlez de code bash et le surligne en conséquence. Vous n'avez pas besoin de colorer la sortie, le programme le fera pour vous s'il reconnaît le type de code qu'il ouvre. Si vous travaillez avec d'autres types de formats, adaptez simplement l'extension à cet ajustement en fonction de vos attentes (par exemple> output.xml,> output.html,> output.py ... etc). Bonne chance! :)
Mettre en surbrillance quelques mots dans le fichier de sortie
Donc, si je l'ai, vous voulez mettre en évidence les mots que vous avez recherchés. Encore une fois, cela ne peut pas être fait dans un fichier texte brut simplement parce que c'est un texte brut. Cependant, vous pouvez y ajouter un format très facilement, par exemple en utilisant du codage HTML. Cela transformera votre sortie en un code html, et lorsque vous l'ouvrirez avec un programme capable d'interpréter le html (écrivain libreoffice, firefox et 10000, etc.), vous verrez quelques mots mis en évidence.
Pour ce faire, disons qu'il s'agit de votre grep, exporté au format HTML:
Et maintenant, vous voulez mettre en évidence le texte clé dans votre sortie. Vous pouvez utiliser sed pour le faire, comme par exemple:
Et violà, maintenant ton keytext est surligné en rouge.
la source