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