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
jq 'del(.metadata.generated, .timestamp)' file1.json xmllint --format --c14n file1
diff -u file1_normalized.json file2_normalized.json Better yet, use a structural diff tool that understands paths: "$FILE1") <(yq -P
ConfigCompare is not just about seeing what changed – it's about understanding why a change matters. Use structural tools, not raw line diffs, and you'll debug config issues in seconds instead of hours.
#!/bin/bash # Usage: configcompare file1.json file2.json # configcompare file1.yaml file2.yaml FILE1=$1 FILE2=$2 EXT="$FILE1##*."
# Using jq to show only differing paths diff <(jq -S . file1.json) <(jq -S . file2.json) | grep '^[<>]' | sed 's/^[<>] //' Often you want to ignore timestamps, versions, or auto-generated IDs.
Disclaimer: The content on According Law is for informational purposes only and should not be construed as legal advice. Always consult a qualified attorney for professional legal guidance.
© 2024 According Law - All Rights Reserved.