jrv-text-diff
Compare two texts, files, or code snippets and show exactly what changed. Supports unified diff, side-by-side view, word-level highlighting, and structural diff for JSON/YAML.
Quick Start
# Compare two files
python3 scripts/text_diff.py file1.txt file2.txt
# Compare inline strings
python3 scripts/text_diff.py --text "hello world" --text2 "hello there"
# Unified diff (patch format)
python3 scripts/text_diff.py file1.txt file2.txt --format unified
# Side-by-side comparison
python3 scripts/text_diff.py file1.txt file2.txt --format side-by-side
# Word-level diff
python3 scripts/text_diff.py file1.txt file2.txt --word-diff
# Ignore whitespace
python3 scripts/text_diff.py file1.txt file2.txt --ignore-whitespace
# JSON structural diff
python3 scripts/text_diff.py data1.json data2.json --format json
# YAML structural diff
python3 scripts/text_diff.py config1.yaml config2.yaml --format yaml
# Output diff as JSON report
python3 scripts/text_diff.py file1.txt file2.txt --output-json
Commands
| Command | Description |
|---|---|
text_diff.py <file1> <file2> |
Compare two files (default: unified diff) |
--text <str> --text2 <str> |
Compare two inline strings |
--format unified |
Unified patch-style diff output |
--format side-by-side |
Two-column comparison |
--format context |
Context diff (like diff -c) |
--format json |
Structural JSON diff |
--format yaml |
Structural YAML diff |
--word-diff |
Highlight word-level changes within lines |
--ignore-whitespace |
Ignore leading/trailing whitespace |
--ignore-case |
Case-insensitive comparison |
--context N |
Lines of context (default: 3) |
--output-json |
Output diff stats as JSON |
--no-color |
Disable ANSI color output |
Use Cases
- Code review: See exactly what changed between two versions of a config or script
- Config auditing: Spot differences between prod and staging configs
- JSON/YAML diffs: Structural comparison ignoring key ordering
- Copy editing: Word-level diff for prose documents
- CI pipelines: JSON output for programmatic diff analysis
Exit Codes
0— Files are identical1— Files differ2— Error (file not found, parse error, etc.)
