DEV Community


Discussion on: Processing Text with Linux Shell - Part 1

shamil profile image
Shamil Author

Hi. I have never used any mac. Would you kindly provide details of sed -i behavior so I can update this article accordingly?

moopet profile image
Ben Sinclair • Edited

BSD sed expects -i to take a file extension so it can save a backup.

Instead of using this:

sed -i YOUR_COMMANDS_HERE foo.txt

you can use something like the following, which will make a backup file and then immediately delete it if the command succeeded:

sed -i.bak YOUR_COMMANDS_HERE -- foo.txt && rm -- "foo.txt.bak"

That looks a little nasty, but it's portable; GNU sed's -i also takes a file extension as an optional argument.