GNU/Linux >> Tutoriales Linux >  >> Linux

Shell de Linux obtiene el valor de un campo de un archivo yml

Eso es bastante fácil, sin usar sed , pero con las herramientas de shell adecuadas. Primero, si necesita conservar sample en una variable para su uso posterior, entonces algo como lo siguiente funcionará usando bash reemplazo de subcadenas para aislar sample en la Prueba:/base de datos: línea:

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

o para una solución más corta que puede volcar a la línea de comandos, elimine la variable y la sustitución de comandos y use una herramienta como cut :

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

o, con awk , simplemente:

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

Todas las formas diferentes se pueden usar dentro de sustitución de comandos (es decir, var=$(stuff) ) para almacenar sample en var , es solo una cuestión de cuál preferiría usar. Creo que entiendes la idea.


Hay mejores herramientas que sed . Es posible que esté atrapado en un sistema mínimo, pero otras personas que buscan una respuesta probablemente no lo estarán.

La versión Python de yq actúa como jq:

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

shyaml también funciona, pero tiene una restricción extraña que solo puede redirigir a él:

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

Si perl está disponible y tienes YAML instalado:

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

O, si quieres ruby :

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

Linux
  1. Ejemplo de archivo /etc/services en Linux

  2. Obtenga el archivo más reciente en un directorio en Linux

  3. PID máximo en Linux

  4. Obtenga una línea específica del archivo de texto usando solo un script de shell

  5. Lectura de un archivo CSV con consultas SQL desde el shell de Linux

Wikit:obtenga resúmenes de Wikipedia desde la línea de comandos en Linux

Cómo crear directorios desde un archivo de texto en Linux

Cómo quitar la contraseña de un archivo PDF en Linux

Cómo obtener el nombre de archivo de la ruta completa en Linux

Cómo quitar (^M) caracteres de un archivo en Linux

¿Plantillas con Linux en un script de Shell?