Why does sed -i create random files with “q” commands? I’m aware that BSD sed behaves differently from GNU sed with regards to the -i option. However, the usual way of using sed -i '' on macOS ceases to work when using a q command, and I’m wondering whether this is a bug or whether I’m overlooking something in the documentation. In either case, I’d like to know how to restore the expected behaviour for the following simple command:

printf foo\\nbar &gt; test
sed -i '' /foo/q test


Expected output:

$ ls -a
.    ..   test
$ cat test
foo


Actual output:

$ ls -a
.            .!79633!test ..           test
$ cat test
foo
bar
$ cat .\!79633\!test
foo


In other words: the original file is untouched. The result is instead written to a new, hidden file. The numeric value in the filename changes with every execution and looks like a process ID (it’s in the right range, too). Using q without an address gives equivalent behaviour.
I’ve found confirmation in the commit history: it’s a bug, which was fixed in r338375 in August 2018.