Tentando executar o comando sed

1

Estou tentando executar o seguinte comando sed que obviamente copio da internet:

sed -i '' -E "s/create_table\ [:\"']([a-zA-Z0-9_]+)[\"']?/create_table\ :, options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC'/g" ./*.rb

No entanto, isso me dá:

sed: can't read s/create_table\ [:"']([a-zA-Z0-9_]+)["']?/create_table\ :, options: 'ENGINE=InnoDB ROW_FORMAT=DYNAMIC'/g: No such file or directory

Eu não consigo entender .. posso pedir ajuda?

    
por Lucian Tarna 30.03.2017 / 15:18

1 resposta

4

No GNU sed , não é necessário fornecer um sufixo vazio ao usar a opção -i para editar um arquivo no local sem backup. No entanto, se você fizer isso, deve seguir imediatamente o -i sem espaço em branco interveniente: caso contrário, o '' é interpretado como uma expressão , que por sua vez faz com que sua expressão real s/pattern/replacement seja interpretada como um nome de arquivo.

Em resumo, as opções são:

sed -i <other options> <expression> <files>

ou

sed -i'' <other options> <expression> <files>
    
por steeldriver 30.03.2017 / 15:47