複数の変数を使用した回避策を見つけました。完璧ではありませんが、機能します。これは、他の誰かが同様の問題を抱えている場合に備えています。誰かがより良い解決策を見つけた場合は、ここで共有してください。
str1='<a href="\(.*\)" target="_blank"'
str2='rel="nofollow">Download<\/a>'
sed -n "s/.*$str1 $str2.*/\1/p"
別の方法は、少しクリーンな方法であるヒアドキュメントを使用することです。
str=$(cat <<'EOF'
<a href="\(.*\)" target="_blank" \
rel="nofollow">Download<\/a>
EOF
)
sed -n "s/.*$str.*/\1/p"
さて、printf をこのように使用できることもわかりましたが、二重引用符をエスケープする必要があります。
str=$(printf "<a href=\"\(.*\)\" target=\"_blank\" \
rel=\"nofollow\">Download<\/a>")
sed -n "s/.*$str.*/\1/p"
最もクリーンな方法はこれです。
str="<a href=\"\(.*\)\" target=\"_blank\" \
rel=\"nofollow\">Download<\/a>"
sed -n "s/.*$str.*/\1/p"