J'utilise jq pour analyser un fichier JSON comme indiqué ci-dessous aquí . Cependant, les résultats pour les valeurs de chaîne de caractères contiennent les "doubles guillemets" comme prévu, comme indiqué ci-dessous :
$ cat json.txt | jq '.name'
"Google"
Comment puis-je l'intégrer dans une autre commande pour enlever le "" ? ainsi j'obtiens
$ cat json.txt | jq '.name' | some_other_command
Google
Quoi some_other_command
puis-je utiliser ?
5 votes
FYI,
cat foo | bar
est nettement moins efficace quebar <foo
ou son équivalent<foo bar
, notamment sibar
est un programme commesort
qui peut paralléliser ses opérations lorsqu'on lui donne un descripteur de fichier recherchable, par opposition à un FIFO (qui ne peut être lu qu'une seule fois d'avant en arrière). Cela signifie à la fois plus de frais de démarrage (invocation de/bin/cat
), et un plus grand nombre de changements de contexte entre l'espace utilisateur et le noyau (chaque élément de contenu passant par un processus d'authentification).read()
surcat
alors awrite()
à une FIFO danscat
et ensuite unread()
dans votre programme de destination, au lieu de passer directement à cette dernière étape).3 votes
Un autre exemple d'un cas où la différence est importante est le suivant
cat foo | wc -c
, vswc -c <foo
-- dans le dernier cas, il peut juste faire deux appels syscall,seek()
ytell()
pour obtenir la taille exacte du fichier, quelle que soit sa longueur ; dans le premier cas, il doit lire jusqu'à la fin, même s'il s'agit de gigaoctets de contenu, parce que seule l'optioncat
a un accès direct au fichier original, etwc
n'a aucun moyen de demander des métadonnées sur lui.