sed in-place editing (-i) difference on Mac OS X: “undefined label” errors

May 27, 2010

I ran into this problem about a month ago with a bash script that I was writing on my MacBook Pro.  For some reason, sed in place editing with ‘sed -i‘ just wouldn’t work, no matter what I did, and I couldn’t find any solution online.

When running something like

sed -i 's/before/after/' test.txt

you get the error message sed: 1: "test.txt": undefined label 'est.txt'.

Eventually, it turned out to be because sed’s ‘-i‘ option takes a parameter to indicate what extension to add to the file name when making a backup.  For example,

sed -i '.bak' 's/before/after/' test.txt

leaves you with two files, ‘test.txt‘ and ‘test.txt.bak‘, where ‘test.txt.bak‘ is the original version.  Unlike Ubuntu and other linux versions, on OS X, this extension parameter is required.  If you really know what you’re doing and don’t want a backup made, you need to provide an empty string ”.

The correct way to run this command on OSX is

sed -i '' 's/before/after/' test.txt

14 Responses to “sed in-place editing (-i) difference on Mac OS X: “undefined label” errors”

  1. BlueSherpa Says:

    Thanks! I ran into this same issue. Your post helped!

  2. Mike Says:

    Hey thanks..! Helped a lot

  3. pawlik Says:

    Thanks for sharing 😉

  4. jerrrry Says:

    another way is:
    sed ‘s/before/after/’ -i — test.txt

  5. mconigliaro Says:

    Thanks! This thing was driving me nuts.

  6. Ruben Cepeda Says:

    This was a real help thanks.

  7. Martin Says:

    Great! You just saved me a good deal of searching and fiddling !!


  8. Le chef de la majorité démocrate du Sénat américain, Harry Reid, a annoncé plus t?t dans la journée qu’il avait conclu avec son homologue républicain un accord de sortie de crise pour relever le plafond de la dette. Leur compromis, annoncé dans l’hémicycle du Sénat, relèverait le plafond de la dette et rouvrirait immédiatement les agences fédérales partiellement fermées depuis le 1er octobre, tout en convoquant une commission pour négocier un budget pour 2014.
    [url=http://www.firminyvolleyball.com/css/canadagoose-fr.php]canada goose pas cher[/url]
    canada goose pas cher

  9. sac lancel Says:

    Le livret?A est une épargne solidaire. Le pécule des épargnants est faiblement rémunéré mais cet argent est ensuite prêté?aux organismes?HLM?pour la construction de logements sociaux à des taux d’intérêt très faibles et sur le temps long. Ce système, qui fonctionne depuis des dizaines d’années, a fait des jaloux?: les banques. Elles lorgnent sur les milliards réservés à la solidarité et ont fait pression sur les gouvernements successifs pour obtenir une part du g?teau.
    [url=http://www.seniorhandihabitat.fr/lancelpascher-fr.php]sac lancel[/url]
    sac lancel


  10. Ce médecin, très “choqué” par l’affaire de l’h?pital de Bayonne, rappelle par ailleurs qu’il existe un réseau local –Palliadour– spécialisé dans les soins palliatifs et toujours disponible pour, avec un médecin référant, assister un médecin placé devant une “situation de fin de vie difficile”.
    [url=http://www.agenceneptune.com/FR/Abercrombie/]http://www.agenceneptune.com/FR/Abercrombie/[/url]
    http://www.agenceneptune.com/FR/Abercrombie/

  11. Mike Says:

    thank you thank you thank you

  12. Pieter Says:

    Thanks for this post, saved me some trouble. 🙂


Comments are closed.