sed -i empty argument compatibility issue

Steven Friedrich FreeBSD at TWC.com
Sat Mar 6 10:53:23 UTC 2021


On 3/5/2021 3:58 PM, Gary Aitken wrote:
> I'm trying to come up with a fix for a script in a port which invokes 
> sed.
> The port comes from a linux environment, and the offending line looks 
> like this:
> (This is in a cMake file.)
>
> COMMAND sed -i "/^# /d" "${outfile}"
>
> The issue is that linux sed expects the -I or -i extension modifier to
> immediately follow the -i.  In the above line, the extension is 
> deliberately
> missing to provide in-place editing.
>
> fbsd expects the extension to be separated from the -i by whitespace, or
> doesn't work properly when it is empty or immediately follows the -i:
>
> $ !ls
> ls -lt temp.tmp*
> -rw-------  1 garya  garya  86 Mar  5 13:15 temp.tmp
> -rw-------  1 garya  garya  86 Mar  5 13:15 temp.tmp_org
> $ sed -ifoo "/^# /d" temp.tmp  (works on both fbsd & linux))
> $ !ls
> ls -lt temp.tmp*
> -rw-------  1 garya  garya  30 Mar  5 13:48 temp.tmp
> -rw-------  1 garya  garya  86 Mar  5 13:15 temp.tmp_org
> -rw-------  1 garya  garya  86 Mar  5 13:15 temp.tmpfoo
> $ cp -p temp.tmp_org temp.tmp
> $ sed -i"" "/^# /d" temp.tmp   (works on linux but not fbsd)
> sed: 1: "temp.tmp": undefined label 'emp.tmp'
> $ sed -i "" "/^# /d" temp.tmp  (works on fbsd but not linux)
> $ !ls
> ls -lt temp.tmp*
> -rw-------  1 garya  garya  30 Mar  5 13:49 temp.tmp
> -rw-------  1 garya  garya  86 Mar  5 13:15 temp.tmp_org
> -rw-------  1 garya  garya  86 Mar  5 13:15 temp.tmpfoo
>
> So fbsd works with '-i ""' but linux requires '-i""'
>
> Does anyone know a work-around for this problem?
>
> Gary


Yes, the correct "work-around" is to FIX Linux.  Linux is supposed to 
mimic Unix, FreeBSD IS Unix.

> _______________________________________________
> freebsd-questions at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to 
> "freebsd-questions-unsubscribe at freebsd.org"


More information about the freebsd-questions mailing list