変えたい
headers['Content-Disposition'] = "attachment; filename=%s" % (filename)
そして
headers['Content-Disposition'] = 'attachment; filename="%s"' % (filename)
(このように「%s」は二重引用符で囲まれています)。
これまでの私の最善の努力は
sed -i -e 's/"headers[\'Content-Disposition\'] = \"attachment\; filename=%s\" % \(filename\)"/"headers[\'Content-Disposition\'] = \'attachment\; filename=\"%s\"\' % \(filename\)"/g' test.txt
しかし、失敗します。
sed: -e 式 #1、文字 33: 未終了の 's' コマンド
私はstackoverflowと他の場所で見つけることができるすべてを試しました。私も引用符をエスケープしようとしました。ただし、単一引用符と二重引用符が多すぎると、エラーが発生する可能性があります。
私はその行を見ましたが、終わらない引用符を残さなかったと確信しています。どのように動作させることができますか?
ベストアンサー1
sed コマンドをファイルに入れると、「参照地獄」を避けることができます。これはBashで参照されず、重要なことを心配するだけですsed
。
#!/bin/sed -f
# Adjust this to match as much as you need
/headers\['Content-Disposition'\] = /{
# change all double-quotes to single
y/"/'/
# now double-quote the %s argument
s/%s/"&"/g
}