TL;DR
Lors de la coloration de grep
, utilisez ** --color = auto
au lieu de --color = always
**.
$ zsh --version
> zsh --version
> zsh 5.7.1 (x86_64-apple-darwin17.7.0)
Dans le processus de poursuite de la tâche, un traitement tel que l'extraction de la ligne où «col1» ou «col2» est une chaîne de caractères spécifique du fichier CSV avec la structure suivante et le tri dans l'ordre décroissant de la valeur de «col3». eu.
test.csv
col1,col2,col3
a,a,10
a,a_1,20
a,a_2,5
a,a_3,10
a_1,a,25
a_1,a_1,30
a_1,a_2,20
a_1,a_3,10
Par exemple, supposons que vous ayez besoin d'extraire une ligne où la valeur de «col1» ou «col2» est «a».
J'ai simplement exécuté la commande suivante, pensant que je devrais obtenir la sortie souhaitée en triant
grep avec ʻa,
.
Terminal
$ grep 'a,' test.csv | sort -t ',' -k 3 -rn
production
a,a_1,20
a,a_3,10
a,a_2,5
a_1,a,25 #Pas de tri numérique
a,a,10 #Comme ci-dessus
cette? Pourquoi les 4e et 5e lignes ne sont-elles pas triées par ordre décroissant?
Quand j'ai essayé le comportement avec sort
seul sans utiliser de tuyau, il semble que le tri descendant avec col3
puisse être exécuté sans problème.
Si oui, y a-t-il une cause dans grep
? Des dizaines de minutes (c'est difficile) pour faire un essai et une erreur avec Atari.
Lorsque j'ai essayé de rediriger la sortie de la commande en question vers un fichier, j'ai finalement trouvé la cause.
Vous trouverez ci-dessous le contenu de la redirection de la sortie de la commande précédente vers un fichier texte.
[01;31m[Ka,[m[Ka_1,20
[01;31m[Ka,[m[Ka_3,10
[01;31m[Ka,[m[Ka_2,5
a_1,[01;31m[Ka,[m[K25
[01;31m[Ka,[m[K[01;31m[Ka,[m[K10
À première vue, j'étais confus par "Nanikore?", Mais à la suite de mes recherches, j'ai trouvé que ce caractère spécial était ** code d'échappement ANSI ** pour la coloration.
Comme j'avais l'habitude de définir ʻexport GREP_OPTIONS = "- color = always" dans
.zshrc, un caractère spécial pour la coloration a été inséré dans la partie qui correspondait au modèle de recherche de
grep`.
Le problème cette fois-ci est que "col3" sur les 4ème et 5ème lignes est devenu une chaîne de caractères non interprétable, et le tri numérique décroissant n'a pas bien fonctionné.
Lorsque j'ai découvert que le paramètre de coloration en était la cause, j'ai commenté la ligne ci-dessus et l'ai exécutée à nouveau, et cela a fonctionné comme prévu.
--Color
de grep
«Mais il est plus facile de voir si vous pouvez le colorier, et je me demande s'il y a quelque chose», et quand j'ai recherché le «--color» de «grep», l'un des «jamais», «auto», «toujours» peut être spécifié. , J'ai trouvé que chacun a les spécifications suivantes.
--never
: ne pas colorer
--ʻAuto: ** Couleur uniquement lorsque la sortie standard est connectée au terminal ** Couleur (ne pas colorer lors des tuyaux ou des redirections) --ʻAlways
: Coloration permanente (** change la chaîne de caractères, ce qui affecte le traitement ultérieur **)
En regardant les choses comme ça, il semble que le mérite de définir ** --color = always
est fondamentalement mince **.
ʻAutoest probablement suffisant pour spécifier des alias et des variables d'environnement pour une meilleure visibilité. S'il y a une exception, est-ce une situation où le résultat de «grep» devient long et est passé à «less» pour être visualisé? L'option
--color de
grep est utilisée de préférence à celle de la variable d'environnement au moment de l'exécution, donc si vous la dirigez vers
less as
grep --color = always` alors seulement Je pense que je peux atteindre mon but.
Colorez la commande grep Different results in grep results when using --color=always option
La cause première du problème était que lorsque j'ai commencé à écrire le programme, j'ai construit un environnement de terminal avec les connaissances que j'avais entendues, en disant: "Il semble que zsh a des fonctionnalités supérieures à bash pour le moment" et "Il semble pratique d'utiliser ce paramètre." C'était là. C'est assez naturel, mais lors de l'utilisation du code et des paramètres du pionnier, il est important de reconnaître correctement le but et la portée de l'influence ... Cependant, je pense que ce n'est que si vous avez des connaissances systématiques que vous pouvez maintenir cet état d'esprit, alors je voudrais continuer à m'y consacrer.
C'était une opportunité précieuse d'autodiscipline dans un sens où j'ai été troublé au fil du temps par le .zshrc
que j'avais copié par le passé.
J'espère que ce petit cas de dépendance aide quelqu'un.
Recommended Posts