DEV Community

Discussion on: Processing Text with Linux Shell - Part 1

Collapse
 
pmcgowan profile image
p-mcgowan

IIRC on mac sed -i behaves differently - The default is not GNU sed. I believe you can brew it to get the good one

Collapse
 
shamil profile image
Shamil

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

Collapse
 
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.