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-iwithout 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.txtFor 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