GNU/Linux >> Linux Esercitazione >  >> Linux

La shell Linux ottiene il valore di un campo da un file yml

Questo è abbastanza facile, non usando sed , ma con strumenti shell appropriati. Innanzitutto, se devi conservare sample in una variabile per un uso successivo, qualcosa di simile al seguente funzionerà utilizzando la sostituzione di sottostringhe di bash per isolare sample in Test:/database: riga:

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

o per una soluzione più breve che puoi scaricare nella riga di comando, rimuovi la variabile e la sostituzione del comando e usa uno strumento come cut :

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

oppure, con awk , semplicemente:

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

Tutti i diversi modi possono essere utilizzati all'interno della sostituzione dei comandi (es. var=$(stuff) ) per memorizzare sample in var , è solo una questione di cui preferiresti usare. Penso che tu abbia capito.


Ci sono strumenti migliori di sed . Potresti essere bloccato su un sistema minimale, ma altre persone che cercano una risposta probabilmente non lo saranno.

La versione python di yq si comporta come jq:

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

Anche shyaml funziona, ma ha una strana restrizione che puoi solo reindirizzare in esso:

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

Se perl è in giro e hai installato YAML:

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

Oppure, se vuoi ruby :

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

Linux
  1. Esempio di file /etc/services in Linux

  2. Ottieni il tempo di creazione del file con Python su Linux

  3. Come creare un file in Linux dalla finestra del terminale?

  4. Come ottenere il percorso del file corrente (pwd) in Linux da C?

  5. Ottieni una riga specifica dal file di testo usando solo lo script della shell

Wikit:ottieni i riepiloghi di Wikipedia dalla riga di comando in Linux

Come creare directory da un file di testo in Linux

Come rimuovere la password da un file PDF in Linux

Come ottenere il nome del file dal percorso completo in Linux

Come rimuovere (^M) caratteri da un file in Linux

Creazione di modelli con Linux in uno script Shell?