GNU/Linux >> Linux の 問題 >  >> Linux

Linuxシェルはymlファイルからフィールドの値を取得します

sed を使用しないので、かなり簡単です。 、ただし適切なシェル ツールを使用します。まず、sample を保持する必要がある場合 後で使用するために変数で、次のようなものが bash を使用して機能します部分文字列の置換 sample を分離する テスト:/データベース: 行:

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

または、コマンド ラインにダンプできる短いソリューションの場合は、変数とコマンドの置換を削除し、cut などのツールを使用します。 :

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

または、awk で 、単に:

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

コマンド置換内でさまざまな方法をすべて使用できます (つまり、var=$(stuff) ) sample を格納する var で 、どちらを使用するかは問題です。お分かりだと思います。


sed より優れたツールがあります .あなたは最小限のシステムで行き詰まっているかもしれませんが、答えを探している他の人はおそらくそうではないでしょう.

yq の Python バージョンは、jq のように動作します:

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

shyaml も機能しますが、リダイレクトしかできないという奇妙な制限があります:

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

perl の場合 があり、YAML がインストールされています:

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

または、ruby が必要な場合 :

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

Linux
  1. Linux のサンプル /etc/services ファイル

  2. Linux のディレクトリにある最新のファイルを取得する

  3. LinuxでPythonを使用してファイル作成時間を取得する

  1. ターミナルウィンドウからLinuxでファイルを作成するには?

  2. CからLinuxで現在のファイル(pwd)へのパスを取得する方法は?

  3. シェルスクリプトだけを使用してテキストファイルから特定の行を取得する

  1. Linux の最大 PID

  2. Windows から Linux にファイルをコピーする

  3. Linux でファイルの最終更新日を取得する