GNU/Linux >> Tutoriels Linux >  >> Linux

Le shell Linux récupère la valeur d'un champ à partir d'un fichier yml

C'est assez facile, sans utiliser sed , mais avec les outils shell appropriés. Tout d'abord, si vous devez conserver sample dans une variable pour une utilisation ultérieure, alors quelque chose comme ce qui suit fonctionnera en utilisant bash remplacement de sous-chaîne pour isoler sample sur le Test :/base de données : ligne :

$ db=$(grep -A3 'test:' database.yml | tail -n1); db=${db//*database: /}; echo "$db"
sample

ou pour une solution plus courte que vous pouvez transférer sur la ligne de commande, supprimez la substitution de variable et de commande et utilisez un outil comme cut :

$ grep -A3 'test:' database.yml | tail -n1 | cut -c 13-
sample

ou, avec awk , simplement :

$ grep -A3 'test:' database.yml | tail -n1 | awk '{ print $2}'
sample

Toutes les différentes manières peuvent être utilisées dans la substitution de commande (c'est-à-dire var=$(stuff) ) pour stocker sample en var , c'est juste une question de laquelle vous préférez utiliser. Je pense que vous avez saisi l'idée.


Il existe de meilleurs outils que sed . Vous pourriez être bloqué sur un système minimal, mais d'autres personnes à la recherche d'une réponse ne le seront probablement pas.

La version python de yq agit comme jq :

$ pip3 install yq
$ yq -r .test.database database.yml
sample

shyaml fonctionne aussi, mais a une étrange restriction que vous ne pouvez que rediriger :

$ pip3 install shyaml
$ shyaml get-value test.database < database.yml
sample

Si perl existe et vous avez installé YAML :

$ cpan YAML
$ perl -MYAML -le 'print YAML::LoadFile(shift)->{test}{database}' database.yml
sample

Ou, si vous voulez ruby :

$ ruby -r yaml -e 'puts YAML.load_file(ARGV[0])["test"]["database"]' database.yml
sample

Linux
  1. Obtenez le temps de création de fichier avec Python sur Linux

  2. Lecture d'un fichier CSV avec des requêtes SQL à partir du shell Linux

  3. Comment obtenir le nom d'hôte de l'IP (Linux) ?

  4. Obtenir la longueur MP3 sous Linux / FreeBSD

  5. Créer des modèles avec Linux dans un script Shell ?

Wikit - Obtenez des résumés de Wikipedia à partir de la ligne de commande sous Linux

Comment créer des répertoires à partir d'un fichier texte sous Linux

Comment supprimer le mot de passe d'un fichier PDF sous Linux

Comment obtenir le nom de fichier à partir du chemin complet sous Linux

Comment supprimer les caractères (^M) d'un fichier sous Linux

Comment obtenir un masque de réseau à partir de bash ?