Compare
Deeply compare two yaml documents
yq compare <yaml_file_1> <yaml_file_2> <path_expression>
Compares the matching yaml nodes at path expression in the two yaml documents. See path expression for more details. Difference calculated line by line, and is printed out line by line where the first character of each line is either:
-
a minus ,indicating the line is not present in the second document (it's removed)+
a plus, indicating that the line is not present in the first document (it's added)
If there are differences then yq
will print out the differences and exit with code 1. If there are no differences, then nothing will be printed and the exit code will be 0.
Example data
Given data1.yaml
"apples": are nice
somethingElse: cool # this is nice
favouriteNumbers: [1,2,3]
noDifference: it's the same
and data2.yaml
apples: are nice
somethingElse: cool # yeah i like it
favouriteNumbers:
- 1
- 3
- 4
noDifference: it's the same
Basic
Basic will compare the yaml documents 'as-is'
yq compare data1.yaml data2.yaml
yields
-"apples": are nice
-somethingElse: cool # this is nice
-favouriteNumbers: [1, 2, 3]
+apples: are nice
+somethingElse: cool # yeah i like it
+favouriteNumbers:
+- 1
+- 3
+- 4
noDifference: it's the same
Formatted
Most of the time, it will make sense to format the documents before comparing:
yq compare --prettyPrint data1.yaml data2.yml
yields
apples: are nice
-somethingElse: cool # this is nice
+somethingElse: cool # yeah i like it
favouriteNumbers:
- 1
-- 2
- 3
+- 4
noDifference: it's the same
Using path expressions
Use path expressions to compare subsets of yaml documents
yq compare -P data1.yaml data2.yml favouriteNumbers
yields
- 1
-- 2
- 3
+- 4
Last updated
Was this helpful?