Os Macs usam a versão BSD dos utilitários, como sed e date , que têm suas próprias idiossincrasias.
Neste caso específico, a compilação BSD de sed manda a extensão para o arquivo de backup com -i , em vez de ser opcional , como no GNU sed .
Como tal:
sed -i .bak 's/needle/pin/g' haystack
O comando mostrado substituirá todas as instâncias de needle por pin no arquivo haystack e o arquivo original será preservado em haystack.bak .
Do manual para a implementação de sed em um Mac:
-i extension Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or partial content in situations where disk space is exhausted, etc.
Ao contrário de um host Linux:
-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)
Observe que "uma extensão de comprimento zero" é diferente de "nenhuma extensão". Você pode evitar o backup totalmente, então, com:
sed -i '' 's/needle/pin/g' haystack