# Replacing Text

> Provides intuitive find & replace CLI with JavaScript regex and string-literal mode. Use this skill when performing text replacements, batch transformations, or need JavaScript-style regex syntax

- Skill: `majiayu000/replacing-text` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add majiayu000/replacing-text`
- Raw SKILL.md: https://api.skillmd.com/api/skills/majiayu000/replacing-text/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: majiayu000 (https://skillmd.com/u/majiayu000)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/majiayu000/replacing-text

---


# 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](./reference/sd-guide.md) 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
```bash
# 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
```

