yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
Go to file
2020-11-19 22:56:13 +11:00
.github Use latest go-lang 2020-09-08 09:43:11 +10:00
cmd 3.4.1 2020-10-19 08:40:59 +11:00
debian Bump version to 3.3.2 2020-08-16 13:02:07 +10:00
docs Removed user docs 2020-01-30 10:32:34 +11:00
examples fix tests 2020-10-09 08:38:42 +11:00
github-action added files for github action 2020-02-26 09:09:37 +11:00
pkg/yqlib fix tests 2020-10-09 08:38:42 +11:00
scripts Added checksum hashes order to release 2020-09-18 16:37:45 +10:00
snap 3.4.1 2020-10-19 08:40:59 +11:00
test splatting 2019-12-09 13:44:53 +11:00
.dockerignore Added formatter, fixed docker build 2019-10-31 08:21:19 +11:00
.gitignore more tests, some refactoring 2020-01-09 08:17:56 +11:00
action.yml Fixing github action description 2020-03-02 08:47:19 +11:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2020-02-21 21:13:14 +11:00
compare.sh splatting 2019-12-09 13:44:53 +11:00
CONTRIBUTING.md Update CONTRIBUTING.md 2020-02-21 21:16:47 +11:00
Dockerfile fix(image): bump alpine image minor version 2020-10-08 12:29:04 +11:00
Dockerfile.dev Use latest go-lang 2020-09-08 09:43:11 +10:00
go.mod Use latest go-lang 2020-09-08 09:43:11 +10:00
go.sum Removed doctools 2020-09-08 13:03:18 +10:00
LICENSE Added License (MIT) 2017-02-10 16:00:25 +11:00
Makefile update ci to use go 1.13, switch to golangci-lint 2019-10-31 08:21:19 +11:00
Makefile.variables Rename to yq 2017-12-18 15:29:41 +11:00
mkdocs.yml Removed user docs 2020-01-30 10:32:34 +11:00
README.md Updated readme re v4 2020-11-19 22:56:13 +11:00
release_instructions.txt updating release instructions 2020-10-19 09:01:52 +11:00
yq_test.go splatting 2019-12-09 13:44:53 +11:00
yq.go Added exit flag 2020-06-10 16:55:20 +10:00

yq

Build Docker Pulls Github Releases (by Release) Go Report

a lightweight and portable command-line YAML processor

The aim of the project is to be the jq or sed of yaml files.

Install

Download the latest binary

MacOS:

Using Homebrew

brew install yq

Ubuntu and other Linux distros supporting snap packages:

snap install yq

Snap notes

yq installs with strict confinement in snap, this means it doesn't have direct access to root files. To read root files you can:

sudo cat /etc/myfile | yq r - a.path

And to write to a root file you can either use sponge:

sudo cat /etc/myfile | yq w - a.path value | sudo sponge /etc/myfile

or write to a temporary file:

sudo cat /etc/myfile | yq w - a.path value | sudo tee /etc/myfile.tmp
sudo mv /etc/myfile.tmp /etc/myfile
rm /etc/myfile.tmp

wget

Use wget to download the pre-compiled binaries:

wget https://github.com/mikefarah/yq/releases/download/{VERSION}/{BINARY} -O /usr/bin/yq &&\
    chmod +x /usr/bin/yq

For instance, VERSION=3.4.0 and BINARY=yq_linux_amd64

Run with Docker

Oneshot use:

docker run --rm -v "${PWD}":/workdir mikefarah/yq yq [flags] <command> FILE...

Run commands interactively:

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:

yq() {
  docker run --rm -i -v "${PWD}":/workdir mikefarah/yq yq "$@"
}

Go Get:

GO111MODULE=on go get github.com/mikefarah/yq/v3

Community Supported Installation methods

As these are supported by the community ❤️ - however, they may be out of date with the officially supported releases.

Windows:

choco install yq

Supported by @chillum (https://chocolatey.org/packages/yq)

Mac:

Using MacPorts

sudo port selfupdate
sudo port install yq

Supported by @herbygillot (https://ports.macports.org/maintainer/github/herbygillot)

Alpine Linux

  • Enable edge/community repo by adding $MIRROR/alpine/edge/community to /etc/apk/repositories
  • Update database index with apk update
  • Install yq with apk add yq

Supported by Tuan Hoang https://pkgs.alpinelinux.org/package/edge/community/x86/yq

On Ubuntu 16.04 or higher from Debian package:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys CC86BB64
sudo add-apt-repository ppa:rmescandon/yq
sudo apt update
sudo apt install yq -y

Supported by @rmescandon (https://launchpad.net/~rmescandon/+archive/ubuntu/yq)

Features

Usage

Check out the documentation for more detailed and advanced usage.

Usage:
  yq [flags]
  yq [command]

Available Commands:
  compare          yq x [--prettyPrint/-P] dataA.yaml dataB.yaml 'b.e(name==fr*).value'
  delete           yq d [--inplace/-i] [--doc/-d index] sample.yaml 'b.e(name==fred)'
  help             Help about any command
  merge            yq m [--inplace/-i] [--doc/-d index] [--overwrite/-x] [--append/-a] sample.yaml sample2.yaml
  new              yq n [--script/-s script_file] a.b.c newValue
  prefix           yq p [--inplace/-i] [--doc/-d index] sample.yaml a.b.c
  read             yq r [--printMode/-p pv] sample.yaml 'b.e(name==fr*).value'
  shell-completion Generates shell completion scripts
  validate         yq v sample.yaml
  write            yq w [--inplace/-i] [--script/-s script_file] [--doc/-d index] sample.yaml 'b.e(name==fr*).value' newValue

Flags:
  -C, --colors        print with colors
  -h, --help          help for yq
  -I, --indent int    sets indent level for output (default 2)
  -P, --prettyPrint   pretty print
  -j, --tojson        output as json. By default it prints a json document in one line, use the prettyPrint flag to print a formatted doc.
  -v, --verbose       verbose mode
  -V, --version       Print version information and quit

Use "yq [command] --help" for more information about a command.

Upgrade from V2

If you've been using v2 and want/need to upgrade, checkout the upgrade guide.

V4 is in development!

If you're keen - check out the alpha release here or the docs (also in alpha) here.

V4 is quite different from V3 (sorry for the migration), however it will be much more similar to jq, use a similar expression syntax and therefore support much more complex functionality!

For now - new features will be held off from V3 in anticipation of the V4 build. Critical fixes / issues will still be released.

Known Issues / Missing Features