良い解決策がない奇妙な問題があります。
何らかの理由で、当社はスクリプトコードをデータベーステーブルに保存します。聞かないでください。新しいバージョンのコードを挿入する必要があるときはいつでも、ファイルを繰り返し、ステートメントで実行するためにすべての文字列を手動でバックスラッシュする必要がありますinsert
。
手動で作業せずにコピーして貼り付けることができるように、ファイル内のすべての文字列をエスケープするツールはありますか?
ファイルには、単一引用符と二重引用符だけでなく、引用符内の引用符も含めることができます"this is \"weird\""
。
以下は、私が実行しているクエリの例です。
delimiter $$
insert into table (code) values ("package a.b.c;
class SomeClass {
var thing = "so \"weird\" and thing's stuff"
}");
スペースやセミコロンをエスケープする必要はありませんが、引用符を破る内容はエスケープする必要があります。変数の内容はthing
上記の例の参照を破ります。
ベストアンサー1
すべての二重引用符とバックスラッシュをエスケープするには、次のようにします。
perl -wpe 's/([\\"])/\\$1/g'
xclipで使用することもできます。
cat myfile | perl -wpe 's/([\\"])/\\$1/g' | xclip -selection clipboard