sed 問題の検索と置換

sed 問題の検索と置換

変えたい

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

}

おすすめ記事