sd: Fast Find & Replace
Always invoke sd skill for find & replace operations - do not execute bash commands directly.
Use sd for intuitive text replacement that's 2-12x faster than sed.
When to Use sd vs ripgrep
Use sd when:
-
Performing replacements on known patterns
-
Batch text transformations across files
-
Need JavaScript-style regex syntax
-
Direct file modifications without search first
Use ripgrep when:
-
Finding unknown patterns or locations
-
Need search results without immediate changes
-
Complex file filtering and type matching
-
Want to preview before modifying
Common workflow: ripgrep skill → sd skill (search first, then replace)
Default Strategy
Invoke sd skill for fast find & replace operations. Use when performing replacements on known patterns, batch text transformations across files, or need JavaScript-style regex syntax.
Common workflow: ripgrep skill → sd skill (search first, then replace) or fd skill → sd skill for batch operations.
Key Options
-
-F for string-literal mode (no regex)
-
$1, $2 or ${var} for capture groups
-
--preview to preview changes
before patterns starting with -
- $$ for literal $ in replacement
When to Use
-
Quick file edits
-
Pipeline replacements: cat file | sd "old" "new"
-
Batch operations across multiple files
-
Complex regex with capture groups
Common Workflows
-
fd → sd : Find files and perform batch replacements
-
ripgrep | sd : Search patterns and replace across matches
-
jq | sd : Extract JSON data and transform to other formats
-
cat file | sd | bat : Transform content and preview with highlighting
Core Principle
Replace text with familiar JavaScript/Python regex syntax - no sed escape hell.
Detailed Reference
For comprehensive find & replace patterns, regex syntax examples, and workflow tips, load sd guide when needing:
-
Advanced regex patterns with capture groups
-
Pipeline operations and batch processing
-
Escape sequence handling
-
Common text transformation recipes
-
Integration with other command-line tools
The guide includes:
-
String-literal vs regex mode usage
-
Capture group patterns and replacements
-
Pipeline operations and batch processing
-
Advanced regex patterns and edge cases
-
Integration with other command-line tools
Skill Combinations
For Discovery Phase
-
ripgrep → sd: Search patterns first, then replace across matches
-
fd → sd: Find files and perform batch replacements
-
jq/yq → sd: Extract data and transform to other formats
For Analysis Phase
-
sd --preview → bat: Preview changes with syntax highlighting
-
sd → fzf: Interactive selection of changes to apply
-
sd → jq/yq: Transform data back to structured formats
For Refactoring Phase
-
sd → searching-text: Verify replacements didn't introduce issues
-
sd → analyzing-code-structure: Follow up with structural changes if needed
-
sd → analyzing-code: Measure impact of text-based changes
Integration Examples
Find and replace across project
fd -e js -x sd "oldPattern" "newPattern" --preview
Chain transformations
cat config.json | jq '.version' | sd '"v' '' | sd '"' '' | xargs git tag
Interactive replacement with preview
rg "deprecated" -l | fzf --multi | xargs sd "deprecated" "legacy" --preview | bat