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