GNU/Linux >> Belajar Linux >  >> Linux

Shell Linux mendapatkan nilai bidang dari file yml

Caranya cukup mudah, tidak menggunakan sed , tetapi dengan alat shell yang sesuai. Pertama, jika Anda perlu mempertahankan sample dalam variabel untuk digunakan nanti, maka sesuatu seperti berikut ini akan bekerja menggunakan bash substring replacement untuk mengisolasi sample di Test:/database: baris:

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

atau untuk solusi yang lebih pendek yang dapat Anda buang ke baris perintah, hapus variabel dan substitusi perintah dan gunakan alat seperti cut :

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

atau, dengan awk , cukup:

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

Semua cara yang berbeda dapat digunakan di dalam penggantian perintah (mis. var=$(stuff) ) untuk menyimpan sample di var , ini hanya masalah yang ingin Anda gunakan. Saya rasa Anda mengerti.


Ada alat yang lebih baik daripada sed . Anda mungkin terjebak pada sistem minimal, tetapi orang lain yang mencari jawaban mungkin tidak.

Versi python dari yq bertindak seperti jq:

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

shyaml juga berfungsi, tetapi memiliki batasan aneh yang hanya dapat Anda alihkan ke dalamnya:

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

Jika perl ada dan Anda telah menginstal YAML:

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

Atau, jika Anda ingin ruby :

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

Linux
  1. Contoh file /etc/services di Linux

  2. Dapatkan waktu pembuatan file dengan Python di linux

  3. Bagaimana cara membuat file di Linux dari jendela terminal?

  1. Bagaimana cara mendapatkan path ke file saat ini (pwd) di Linux dari C?

  2. Dapatkan baris tertentu dari file teks hanya dengan menggunakan skrip shell

  3. Membaca file CSV dengan kueri SQL dari linux shell

  1. Bagaimana cara mendapatkan nama host dari IP (Linux)?

  2. menyalin file dari windows ke Linux

  3. Dapatkan Tanggal Modifikasi File Terakhir di Linux