Pode haver abordagens mais elegantes (no entanto, qualquer uma delas vem à minha mente agora), então vamos nos ater a sed .
-
Por que você não comanda o trabalho como você espera?
$corresponde ao fim de linha , por isso suaupdate table ...string é colocada no final de cada linha. -
Como melhorar?
- Você não precisa de
cat;sedusa um arquivo como argumento também. - Defina a linha inteira como um padrão correspondente (
.*corresponde a tudo, coloque-a em colchetes com escape para fazer referência a ela:\(.*\) -
Use a string de comando sql como um substituto e coloque a marca de referência
quando apropriado:sed "s|\(.*\)|update table set field where file_number=\'\';|" file.txt > file.sqlproduzindo
update table set field where file_number='123456789'; update table set field where file_number='234567891'; update table set field where file_number='345678912'; update table set field where file_number='456789123';
- Você não precisa de