私はs/&/\&/g
がエスケープされたアンパサンドをすべて置き換え、アンパサンドで置き換えることを知っています。私はもっと厄介になりたい。私はそれらのエスケープされたアンパサンドがhrefにある場合にのみそれらを置き換えたいと思います。私はそれを理解することはできません。hrefのアンパサンドを変更します
私は次のことをしようとしていたが、それは働いていませんでした。
echo "<a href="http://example.com?q=man&string=1&bat=2">Link</a>" | sed -E 's/^href="(.*)&/\1&/g'
それは動作しませんでした。私はまた、エスケープされたアンパサンドの最初のインスタンスのみを実行し、すべてではないという別の問題も確認します。誰でも解決策が何であるか知っていますか?
ファイルを介して実行するように修正しますが、HTMLパーサと言語へのアクセス権を持っていますか?ところで、HTML属性*の中にあるURLのアンパサンドは、「&」と表示する必要があります。 –
@muistooshort - パーサーがほしいと思わない...この1つのケースに興味がある...私はURLが&であるべきだと思ったが、この1つのウェブサイトはアンエスケープされていて、それに多くのリンクがあるそれを目標とするのが良いでしょう。 – user983223
HTMLのURL形式は、リモートサーバーに送信されるURLとは異なります。ブラウザはURLを送信する前にHTMLのデコードを適用することになっています。おそらく、あなたは 'href'属性を抽出し、その場でそれらを置き換えるのではなく抽出属性をHTMLデコードしたいと思うかもしれません。 –