← All cheatsheets

Shell

sed — find-and-replace and line edits that work in scripts

## Substitute
`sed 's/foo/bar/' file` — replace first `foo` per line
`sed 's/foo/bar/g' file` — replace all on each line
`sed -i 's/foo/bar/g' file` — edit file in place (GNU)
`sed -i '' 's/foo/bar/g' file` — edit in place on macOS (empty backup ext)

## Anchors + regex
`sed 's/^foo/bar/' file` — only at line start
`sed -E 's/[0-9]+/N/g' file` — extended regex

## Print specific lines
`sed -n '5p' file` — print line 5
`sed -n '10,20p' file` — print lines 10-20
`sed -n '/pattern/p' file` — print matching lines

## Delete lines
`sed '/^$/d' file` — remove blank lines
`sed '/^#/d' file` — remove comment lines
`sed '5,10d' file` — delete lines 5-10

## Multiple expressions
`sed -e 's/foo/X/' -e 's/bar/Y/' file` — run multiple

## Tip
For complex multiline edits, use `awk` or `perl` — sed is for one-line edits.