diff -u file1_normalized.json file2_normalized.json Better yet, use a structural diff tool that understands paths:
#!/bin/bash # Usage: configcompare file1.json file2.json # configcompare file1.yaml file2.yaml FILE1=$1 FILE2=$2 EXT="$FILE1##*."
diff <(grep -v '^[[:space:]]*"version"' file1.json) \ <(grep -v '^[[:space:]]*"version"' file2.json) For deeply nested configs, use git diff --no-index with color:
xmllint --format --c14n file1.xml > file1_normalized.xml Now compare the normalized files:
case $EXT in json) diff -u <(jq -S . "$FILE1") <(jq -S . "$FILE2") ;; yaml|yml) diff -u <(yq -P . "$FILE1") <(yq -P . "$FILE2") ;; xml) diff -u <(xmllint --format --c14n "$FILE1") <(xmllint --format --c14n "$FILE2") ;; *) diff -u "$FILE1" "$FILE2" ;; esac
Configcompare !!install!! -
diff -u file1_normalized.json file2_normalized.json Better yet, use a structural diff tool that understands paths:
#!/bin/bash # Usage: configcompare file1.json file2.json # configcompare file1.yaml file2.yaml FILE1=$1 FILE2=$2 EXT="$FILE1##*." configcompare
diff <(grep -v '^[[:space:]]*"version"' file1.json) \ <(grep -v '^[[:space:]]*"version"' file2.json) For deeply nested configs, use git diff --no-index with color: diff -u file1_normalized
xmllint --format --c14n file1.xml > file1_normalized.xml Now compare the normalized files: (grep -v '^[[:space:]]*"version"' file1.json) \ <
case $EXT in json) diff -u <(jq -S . "$FILE1") <(jq -S . "$FILE2") ;; yaml|yml) diff -u <(yq -P . "$FILE1") <(yq -P . "$FILE2") ;; xml) diff -u <(xmllint --format --c14n "$FILE1") <(xmllint --format --c14n "$FILE2") ;; *) diff -u "$FILE1" "$FILE2" ;; esac