yq | portable command-line YAML | YAML Processing library
kandi X-RAY | yq Summary
kandi X-RAY | yq Summary
a lightweight and portable command-line YAML, JSON and XML processor. yq uses jq like syntax but works with yaml files as well as json and xml. It doesn't yet support everything jq does - but it does support the most common operations and functions, and more is being added continuously.
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of yq
yq Key Features
yq Examples and Code Snippets
Community Discussions
Trending Discussions on yq
QUESTION
macOS 12.3 update drops Python 2 and replaces it with version 3:
https://developer.apple.com/documentation/macos-release-notes/macos-12_3-release-notes
Python Deprecations Python 2.7 was removed from macOS in this update. Developers should use Python 3 or an alternative language instead. (39795874)
I understand we need to migrate to version 3, but in the meantime we still need version 2. Homebrew does not seem to have it anymore:
...ANSWER
Answered 2022-Apr-04 at 15:50You can get any Python release, including the last Python 2, from the official download site:
https://www.python.org/downloads/release/python-2718/ → macOS 64-bit installer
QUESTION
If I have two files, data1.yaml and data2.yaml.
I do not want to compare all conntent of data files. I need to compare only for example version part
...ANSWER
Answered 2022-Mar-29 at 11:29May be something like this?
QUESTION
Given the following yaml:
...ANSWER
Answered 2022-Mar-17 at 11:07Using kislyuk/yq you can base your filter on jq
.
to_entries
splits up the object into an array of key-value pairsselect
selects those items matching your criteria- String interpolation in combination with the
-r
option puts together your desired output
QUESTION
Hi I would like to update a yaml like string into a yaml
i do have the following yaml file argocd.yaml
ANSWER
Answered 2021-Oct-21 at 06:20Your second approach can work, but in a roundabout way, as mikefarah/yq does not support updating multi-line block literals yet
One way to solve this, with the existing constructs would be to do below, without having to create a temporary YAML file
QUESTION
I got this test.yaml
:
ANSWER
Answered 2022-Mar-08 at 23:20You can either make name
and mountPath
appear on the same level:
QUESTION
I have around 30,000 .md files which include a frontmatter. all of them have different set of keys. To sort them alphabetically I successfully used brew yq and find.
...ANSWER
Answered 2022-Feb-25 at 14:51You need to pass the --front-matter=process
when modifying the front-matter content and pass the required expression to modify the tags.
For case 1) pre-formatted array notation with just sorting needed, use yq as
QUESTION
I have the following YAML file :
...ANSWER
Answered 2021-Oct-27 at 05:42With the syntax you've shown in the question, I would assume you are using mikefarah/yq.
Its DSL is almost similar to that of jq
, so you can use select
operator for choosing the right record and use the |=
to update the desired value
QUESTION
I would like to get some better understanding about what aspects of YAML refer to the encoding of data vs what aspects refer to semantic.
A simple example:
...ANSWER
Answered 2022-Feb-23 at 00:29You're asking for equivalence but that's not a term in the spec and therefore cannot be discussed (at least not without definition). I'll go with discussing equality instead, which is defined by the spec as follows:
Two scalars are equal only when their tags and canonical forms are equal character-by-character. Equality of collections is defined recursively.
One node in your example has the tag !!binary
but the others do not have tags. So we must check what the spec says about tags of nodes that don't have explicit tags:
The YAML spec says that every node is to have a tag. Any node that does not have an explicit tag gets a non-specific tag assigned. Nodes are divided into scalars (that get created from textual content) and collections (sequences and mappings). Every non-plain scalar node (i.e. every scalar in quotes or given via |
or >
) that does not have an explicit tag gets the non-specific tag !
, every other node without explicit tag gets the non-specific tag ?
.
During loading, the spec defines that non-specific tags are to be resolved to specific tags by means of using a scheme. The specification describes some schemes, but does not require an implementation to support any particular one.
The failsafe scheme, which is designed to be the most basic scheme, will resolve non-specific tags as follows:
- on scalars to
!!str
- on sequences to
!!seq
- on mappings to
!!map
and that's it.
A scheme is allowed to derive a specific tag from a non-specific one by considering the kind of non-specific tag, the node's position in the document, and the node's content. For example, the JSON Scheme will give a scalar true
the tag !!bool
due to its content.
The spec says that the non-specific tag !
should only be resolved to !!str
for scalars, !!seq
for sequence, and !!map
for mappings, but does not require this. This is what most implementations support and means that if you quote your scalar, you will get a string. This is important so that you can give the scalar "true"
quoted to avoid getting a boolean value.
By the way, the spec does not say that every step defined there is to be implemented slavishly as defined in the spec, it is more a logical description. A lot of implementations do not actually transition from non-specific tags to specific tags, but instead directly choose native types for the YAML data they load according to the scheme rules.
Applying EqualityNow that we know how tags are assigned to nodes, let's go over your example:
QUESTION
I have tried many times with different combinations, but I cant get it working. Here is my yq command
yq -i e '(.spec.template.spec.containers[]|select(.name == "od-fe").image) = "abcd"
it is supposed to replace the deployment image which is successful, but it also adds template.spec.containers
to the service. here is the deployment + service yaml
ANSWER
Answered 2022-Feb-19 at 19:06One way to fix that would be include a select
statement at the top level to act on only Deployment
type
QUESTION
I have a yml file called output.yml
which contains a K8s Service, Deployment and Ingress resources like so (lots of fields omitted for brevity):
ANSWER
Answered 2022-Feb-16 at 11:47It can be accomplished by doing a recursive decent to identify keys matching your string and update their value part using |=
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
No vulnerabilities reported
Install yq
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page