yq is a portable command-line YAML, JSON, XML, CSV, TOML and properties processor
Go to file
Mathias Brodala a2b2b6fa79
Set entrypoint for Docker image
With this the image can be run without "yq" but directly passing arguments instead.

This is a breaking change since existing commands will now fail due to "yq yq" being invalid.

See https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#entrypoint
2020-06-19 12:44:18 +02:00
.github Update bug_report.md 2020-06-15 21:42:26 +10:00
cmd Fixed deep read at root level 2020-06-15 12:31:13 +10:00
debian Changelog updated for version 3.3-0 2020-05-01 10:31:53 +10:00
docs Removed user docs 2020-01-30 10:32:34 +11:00
examples Can stripComments and explodeAnchors for compare 2020-06-11 09:13:55 +10:00
github-action added files for github action 2020-02-26 09:09:37 +11:00
pkg/yqlib Fixed deep read at root level 2020-06-15 12:31:13 +10:00
scripts Attempt to fix git workflow action 2020-04-14 11:18:45 +10:00
snap Version bump 2020-06-12 12:23:18 +10: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 Set entrypoint for Docker image 2020-06-19 12:44:18 +02:00
Dockerfile.dev Upgrade yq_dev container to golang:1.14 base container and deb packages to python3 2020-04-15 09:07:40 +10:00
go.mod Update to latest go-yaml library, updated test w.r.t. formatting and comment handling fixes 2020-06-10 16:02:12 +10:00
go.sum Update to latest go-yaml library, updated test w.r.t. formatting and comment handling fixes 2020-06-10 16:02:12 +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 2020-06-12 09:30:05 +10:00
release_instructions.txt Bump debian package to version 3.1-2 2020-02-25 08:57:41 +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.

New version!

V3 is officially out - if you've been using v2 and want/need to upgrade, checkout the upgrade guide.

Install

Download the latest binary

MacOS:

brew install yq

Windows:

choco install yq

Supported by @chillum

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

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

Go Get:

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

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 "$@"
}

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.