---
name: "sd"
section: "1"
platform: "linux"
package: "sd"
version: "1.1.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/sd"
---

# sd(1)

## NAME

sd

## SYNOPSIS

**sd** \[**-p**\|**--preview**\] \[**-F**\|**--fixed-strings**\] \[**-n**\|**--max-replacements**\] \[**-f**\|**--flags**\] \[**-A**\|**--across**\] \[**-h**\|**--help**\] \[**-V**\|**--version**\] \<*FIND*\> \<*REPLACE\_WITH*\> \[*FILES*\]

## DESCRIPTION

## OPTIONS

- **-p**, **--preview**

  Display changes in a human reviewable format (the specifics of the format are likely to change in the future)

- **-F**, **--fixed-strings**

  Treat FIND and REPLACE\_WITH args as literal strings

- **-n**, **--max-replacements**=*LIMIT* \[default: 0\]

  Limit the number of replacements that can occur per file. 0 indicates unlimited replacements

- **-f**, **--flags**=*FLAGS*

  Regex flags. May be combined (like \`-f mc\`).

  c - case-sensitive

  e - disable multi-line matching

  i - case-insensitive

  m - multi-line matching

  s - make \`.\` match newlines

  w - match full words only

- **-A**, **--across**

  Process each input as a whole rather than line by line. This allows patterns to match across line boundaries but uses more memory and prevents streaming

- **-h**, **--help**

  Print help (see a summary with '-h')

- **-V**, **--version**

  Print version

- \<*FIND*\>

  The regexp or string (if using \`-F\`) to search for

- \<*REPLACE\_WITH*\>

  What to replace each match with. Unless in string mode, you may use captured values like $1, $2, etc

- \[*FILES*\]

  The path to file(s). This is optional - sd can also read from STDIN.

  Note: sd modifies files in-place by default. See documentation for examples.

## EXIT STATUS

- 0

  Successful program execution.

- 1

  Unsuccessful program execution.

- 101

  The program panicked.

## EXAMPLES

- String-literal mode

  **$ echo 'lots(((\[\]))) of special chars' \| sd -F '(((\[\])))' ''**\
   lots of special chars

- Regex use. Let's trim some trailing whitespace

  **$ echo 'lorem ipsum 23   ' \| sd '\\s+$' ''**\
   lorem ipsum 23

- Indexed capture groups

  **$ echo 'cargo +nightly watch' \| sd '(\\w+)\\s+\\+(\\w+)\\s+(\\w+)' 'cmd: $1, channel: $2, subcmd: $3'**\
   cmd: cargo, channel: nightly, subcmd: watch

- Find & replace in file

  **$ sd 'window.fetch' 'fetch' http.js**\

- Find & replace from STDIN an emit to STDOUT

  **$ sd 'window.fetch' 'fetch' \< http.js**\
