mirror of
https://github.com/taigrr/yq
synced 2025-01-18 04:53:17 -08:00
2.0 KiB
2.0 KiB
description
description |
---|
Deeply compare two yaml documents |
Compare
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 space, indicating no change at this line
-
a minus ,indicating the line is not present in the second documentit's removed
+
a plus, indicating that the line is not present in the first documentit'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