(Compiling an answer from comments, the know-how is by melpomene and AlexP.)
What is that ''
after sed -i
?
-i
means in-place, that is, edit in the file directly.
-i ''
means edit in place a file whose name is the empty string.
Since there probably is no file whose name is the empty string, sed complains that it cannot read it.
Note 1 platform dependency:
The syntax of -i
is one difference between GNU sed and sed from mac os.
Note 2 “usual” order of arguments:
The -e
switch to indicate the sed code allows having it in between file names.
This is a trap (in which I for example got caught embarassingly), by making you trip over your expectations of what you find where in an sed command line.
It allows
sed -i filename -e "expression" AnotherFileName
which is an unintentionally camouflaged version of
sed -i'NoExtensionGiven' "expression" filename AnotherFileName
.