mirror of
https://github.com/taigrr/yq
synced 2025-01-18 04:53:17 -08:00
93 lines
2.1 KiB
Markdown
93 lines
2.1 KiB
Markdown
---
|
|
description: yq is a lightweight and portable command-line YAML processor
|
|
---
|
|
|
|
# yq
|
|
|
|
   
|
|
|
|
## Install
|
|
|
|
`yq` has pre-built binaries for most platforms - checkout the [releases page](https://github.com/mikefarah/yq/releases) for the latest build. Alternatively - you can use one of the methods below:
|
|
|
|
### On MacOS:
|
|
|
|
```bash
|
|
brew install yq
|
|
```
|
|
|
|
### On Windows:
|
|
|
|
```bash
|
|
choco install yq
|
|
```
|
|
|
|
Kindly maintained by @chillum \([https://github.com/chillum/choco-packages/tree/master/yq](https://github.com/chillum/choco-packages/tree/master/yq)\)
|
|
|
|
### On Ubuntu and other Linux distributions supporting `snap` packages:
|
|
|
|
```bash
|
|
snap install yq
|
|
```
|
|
|
|
#### Snap notes
|
|
|
|
`yq` installs with with [_strict confinement_](https://docs.snapcraft.io/snap-confinement/6233) in snap, this means it doesn't have direct access to root files. To read root files you can:
|
|
|
|
```bash
|
|
sudo cat /etc/myfile | yq -r - somecommand
|
|
```
|
|
|
|
And to write to a root file you can either use [sponge](https://linux.die.net/man/1/sponge):
|
|
|
|
```bash
|
|
sudo cat /etc/myfile | yq -r - somecommand | sudo sponge /etc/myfile
|
|
```
|
|
|
|
or write to a temporary file:
|
|
|
|
```bash
|
|
sudo cat /etc/myfile | yq -r - somecommand | sudo tee /etc/myfile.tmp
|
|
sudo mv /etc/myfile.tmp /etc/myfile
|
|
rm /etc/myfile.tmp
|
|
```
|
|
|
|
### On Ubuntu 16.04 or higher from Debian package:
|
|
|
|
```bash
|
|
sudo add-apt-repository ppa:rmescandon/yq
|
|
sudo apt update
|
|
sudo apt install yq -y
|
|
```
|
|
|
|
Kindly maintained by @rmescandon
|
|
|
|
### go get:
|
|
|
|
```text
|
|
GO111MODULE=on go get github.com/mikefarah/yq/v3
|
|
```
|
|
|
|
## Docker
|
|
|
|
Oneshot use:
|
|
|
|
```bash
|
|
docker run --rm -v ${PWD}:/workdir mikefarah/yq yq [flags] <command> FILE...
|
|
```
|
|
|
|
Run commands interactively:
|
|
|
|
```bash
|
|
docker run --rm -it -v ${PWD}:/workdir mikefarah/yq sh
|
|
```
|
|
|
|
It can be useful to have a bash function to avoid typing the whole docker command:
|
|
|
|
```bash
|
|
yq() {
|
|
docker run --rm -i -v ${PWD}:/workdir mikefarah/yq yq $@
|
|
}
|
|
```
|
|
|