sed is designed for editing streams - editing files is what
ed is for! You can get consistent behavior on any UNIX platform with the above one-liner.
printf command sends a series of editing commands to
ed, each separated by a newline. In this case, the substitution command
,s/^Exec=[^ ]*/& -s/ is nearly the same as in
sed, appending a space and a -s to the line starting with Exec=. The only difference is the comma at the beginning designating the lines to operate on. This is shorthand for
1,$, which tells
ed to apply the command to the first through the last lines (i.e., the entire file).
ed to write the file, and
q to quit.