J'ai besoin d'une sortie grep avec contexte, en couleur et des lignes vides comme séparateur de groupe. Dans cette question , j'ai appris à définir la coutume group-separator
et j'ai construit ma commande grep comme ceci:
grep --group-separator="" --color=always -A5
mais le séparateur de groupe n'est en fait pas vide, mais il contient toujours le code de couleur (ie [[36m[[K[[m[[K
). C'est parce que j'utilise --color=always
. Mais j'ai besoin de couleur dans ma commande grep, et j'ai besoin que le séparateur soit une ligne vierge (pour un traitement ultérieur)
Comment puis-je combiner ces deux conditions?
--color=always
la correspondance imprimera avec la couleur, et si vous avez--group-separator=""
défini la chaîne vide, vous obtiendrez une ligne vierge après votre groupe de correspondance. Veuillez réessayer en laissant le--group-separator=""
avec la chaîne vide, pas une séquence de couleurs spécifique, puis expliquez ce qui ne fonctionne pas.od -c
pour voir les caractères cachés qui apparaissent dans les lignes vides.od
.Réponses:
Si vous utilisez la
GREP_COLORS
variable d'environnement, vous pouvez contrôler des couleurs spécifiques pour chaque type de correspondance.man grep
explique l'utilisation de la variable.La commande suivante imprimera une correspondance colorée, mais rien sur la ligne qui sépare le groupe, juste une ligne vierge. Redirigée vers
od
vous verrez l'évasion de couleur avant et après le match, mais seulement\n\n
à la séparation du groupe.La désactivation du
se
composant supprimera l'impression des couleurs dans le séparateur de groupe.Étant donné que mon exemple ci-dessus a utilisé toutes les valeurs par défaut pour
GREP_COLORS
les éléments suivants, cela fonctionnera également.Si vous n'utilisez pas un
bash
shell similaire, vous devrez peut-être d'GREP_COLORS
abord exporter .la source
Personnellement, je le fais en utilisant Perl, non
grep
. J'ai un petit script qui mettra en évidence un motif donné en couleur:Si vous enregistrez cela dans votre chemin sous
color
, vous pouvez obtenir la sortie souhaitée en exécutantDe cette façon, le script colorie les correspondances pour vous et vous pouvez dire de
grep
ne pas utiliser de couleurs et d'éviter ce problème.la source