Eu acabei de começar a aprender sobre o sed e me deparei com um “pegadinho” ao usar a opção -i no OS X. A opção -i permite que você edite um arquivo no local. É necessário um parâmetro opcional – uma string a ser usada como extensão para o arquivo de backup. Se este parâmetro não for fornecido, um arquivo de backup não será criado.
Eu estava usando o sed para remover algumas referências de tag de um arquivo ctags . Como o arquivo poderia ser facilmente gerado novamente, não senti a necessidade de fornecer uma extensão de backup. Tentei executar o comando abaixo, mas recebi um erro:
→ sed -i "/lib/timekeeper/employee.rb/d" tags
sed: 1: "tags": undefined label 'ags'
Depois de coçar a cabeça e pesquisar no Google, descobri que no OS X o parâmetro não é opcional, então o comando correto é este:
→ sed -i "" "/lib/timekeeper/employee.rb/d" tags