- Posted on
- • Software
yq: Process YAML files with ease
- Author
-
-
- User
- Linux Bash
- Posts by this author
- Posts by this author
-
Introduction to yq
: A Powerful YAML Processor for the Command Line
In the world of software development, YAML has become a universally accepted format for configuration files, due to its human-readable structure. However, manipulating YAML data directly from the command line or within shell scripts can be complex and error-prone. This is where yq
comes into play. Inspired by the functionality of jq
(a command-line JSON processor), yq
is a powerful tool that allows you to read, write, and modify YAML files with ease. In this blog post, we'll explore the capabilities of yq
, provide detailed installation instructions for various Linux distributions, and demonstrate some basic usage.
What is yq
?
yq
is a lightweight and portable command-line YAML processor. It doesn't merely convert YAML to JSON to process it (although it can), but instead, directly processes YAML files using a tailored expression language. This direct approach helps in preserving comments, styles, and other intrinsic formatting in your YAML files.
Installing yq
on Different Linux Distributions
Ubuntu (Using apt
)
yq
is available in the Universe repository for Ubuntu versions 20.04 and later. To install yq
using apt
, you first need to make sure your package list is updated:
sudo apt update
Next, install yq
:
sudo apt install yq
Fedora (Using dnf
)
For Fedora users, yq
can be installed using the dnf
package manager:
sudo dnf install yq
openSUSE (Using zypper
)
On openSUSE, you can use zypper
to install yq
:
sudo zypper install yq
Basic Usage of yq
After installation, you can start using yq
to manipulate your YAML files. Here are a few basic operations:
Reading Data
To read a value from a YAML file (for example, reading the name
field under person
):
# sample.yaml
person:
name: John Doe
age: 30
You can use:
yq e '.person.name' sample.yaml
This command will output: John Doe
.
Writing Data
To update the name
field under person
to Jane Doe
:
yq e '.person.name = "Jane Doe"' -i sample.yaml
The -i
option modifies the file in-place.
Merging YAML Files
To merge two YAML files, you can use:
yq ea 'select(fileIndex == 0) * select(fileIndex == 1)' file1.yaml file2.yaml
This command merges file2.yaml
into file1.yaml
.
Conclusion
yq
offers a simple syntax and powerful features for manipulating YAML files, making it an indispensable tool for developers and system administrators. Whether you're involved in writing deployment scripts, managing config files, or just need a way to parse YAML data quickly, yq
can streamline your workflow. With support for most major Linux distributions and straightforward syntax, yq
is an excellent addition to your command-line toolkit.
References
Official
yq
GitHub page: https://github.com/mikefarah/yqyq
documentation: https://mikefarah.gitbook.io/yq/
By understanding its core functionalities and mastering some practical examples, you can efficiently handle various tasks involving YAML files directly from the command line. Happy processing!