Nick Vanderbilt
Nick Vanderbilt

Reputation: 2535

sed command not working in mac

Following sed command is not working on my lion mac.

find . -type f -exec sed -i 's/user_dashboard/user/g' {} \;

I am getting this error

sed: 1: "./vendor/assets/javascr ...": invalid command code .

Upvotes: 7

Views: 10863

Answers (3)

zenin
zenin

Reputation: 305

replacing text inside a file on the fly with sed on mac is possible,

the command is just a little different.

with: -i , you have to specify a postfix, which sed will use to save the original file after it modified it.

run the command as:

$ sed -i _backup -E 's/foo/bar/' /tmp/jestinkt.txt

ending with both the modified /tmp/jestinkt.txt and the original /tmp/jestinkt.txt_backup

Upvotes: 3

shellter
shellter

Reputation: 37318

The OSX version of sed is not the same as those found in most Linux systems.

It extends the -i option to give you the opportunity save a file with a different extension, but requires input for that extension.

If you just want to overwrite the file in place, you need to use sed -i "" ...sedCmd.... fileName to rename your file in-place.

Per @JamesMcMahon 's comment, see here for the full doc for OSX/BSD sed.

I hope this helps.

Upvotes: 25

Eduardo Ivanec
Eduardo Ivanec

Reputation: 11862

-i probably has a different meaning (not "in-place") in your version of sed. Try using gsed if available or replacing -i with -e and using a temporary file (and a mv afterwards) to emulate it.

Upvotes: 6

Related Questions