Console9

sed: macOS in-place edit fails with extra characters error

Fix BSD sed on macOS requiring -i '' for in-place edits when GNU sed syntax produces an error.

sed: macOS in-place edit fails with extra characters error

BSD sed on macOS requires -i '' for in-place edits — GNU sed syntax -i without arguments produces an error.

When sed Produces This Error

macOS displays sed: 1: extra characters after \ command or creates an unwanted backup file when running sed -i 's/old/new/g' file.txt (GNU syntax).

What Causes the macOS In-Place Edit Error in sed

BSD sed (shipped with macOS) requires an explicit backup extension argument after -i. sed -i 's/...' makes BSD sed interpret s/... as the backup extension, not as the substitution command.

How to Fix macOS In-Place Edit in sed

Use -i '' (empty string) for in-place editing without a backup file:

sed -i '' 's/old/new/g' file.txt

For cross-platform scripts that work on both Linux and macOS, install GNU sed via Homebrew and use gsed:

brew install gnu-sed
gsed -i 's/old/new/g' file.txt