カテゴリー
【yqコマンド活用】yqコマンドでYAMLファイルを自由自在に操作する
※ 当ページには【広告/PR】を含む場合があります。
2023/06/09
yqをLinuxにインストール
$ sudo apt install snap
$ snap --version
snap: コマンドが見つかりません
$ sudo apt install snapd
$ snap --version
snap 2.49-1+deb11u2
snapd 2.49-1+deb11u2
series 16
debian 11
kernel 5.10.0-21-amd64
$ snap install yq
2023-06-08T18:13:22+09:00 INFO Waiting for automatic snapd restart...
Warning: /snap/bin was not found in your $PATH. If you've not restarted your
session since you installed snapd, try doing that. Please see
https://forum.snapcraft.io/t/9469 for more details.
yq v4.34.1 from Mike Farah (mikefarah) installed
/snap/bin
.bashrc
/snap/bin
$ echo 'export PATH=$PATH:/snap/bin' >> ~/.bashrc
$ source ~/.bashrc
$ yq --version
yq (https://github.com/mikefarah/yq/) version v4.34.1
yqを簡単に使ってみよう
yqの基本
whoami: HOGE
whoami
$ file=$(cat << EOF
whoami: HOGE
EOF
)
$ echo "$file" | yq .whoami
HOGE
.
whoami
yqでのフィールドの書き換え
$file=$(cat << EOF
whoami: HOGE
EOF
)
$ echo "$file" | yq '
.whoami = "PIYO" | .
'
whoami: PIYO
.whoami
環境変数を利用する
strenv
#👇環境変数をセット
$ export HOGE_VAR=SECRET_HOGE
$ file=$(cat << EOF
whoami: HOGE
EOF
)
$ echo "$file" | yq '
.whoami = strenv(HOGE_VAR) | .
'
whoami: SECRET_HOGE
複数のフィールドを書き換える
title: 僕のお家
family:
-
member: 僕
age: 13
favorite: ハンバーグ
-
member: おやじ
age: 43
favorite: 酒
-
member: ママ
age: 45
favorite: パチンコ
-
member: たま
age: 2
favorite: マタタビ
$ file=$(cat << EOF
title: 僕のお家
family:
-
member: 僕
age: 13
favorite: ハンバーグ
-
member: おやじ
age: 43
favorite: 酒
-
member: ママ
age: 45
favorite: パチンコ
-
member: たま
age: 2
favorite: マタタビ
EOF
)
$ echo "$file" | yq '
.family[1].favorite = "ゴルフ" | .
'
#👇出力
title: 僕のお家
family:
- member: 僕
age: 13
favorite: ハンバーグ
- member: おやじ
age: 43
favorite: ゴルフ
- member: ママ
age: 45
favorite: パチンコ
- member: たま
age: 2
favorite: マタタビ
|
$ echo "$file" | yq '
.title = "山田家" |
.family[1].favorite = "ゴルフ" |
.family[0].member = "のりお" |
.family[0].health = "健康" |
.family[4].member = "ぽち" |
.
'
#👇出力
title: 山田家
family:
- member: のりお
age: 13
favorite: ハンバーグ
health: 健康
- member: おやじ
age: 43
favorite: ゴルフ
- member: ママ
age: 45
favorite: パチンコ
- member: たま
age: 2
favorite: マタタビ
- member: ぽち
まとめ
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー