<li>
多くのindex.htmlページから次のhtmlタグを削除する必要があります。
<li>
<a href="https://forward.global.ssl.fastly.net/contributoragreements/" onclick="_gaq.push(['_trackEvent', 'ClickTracking', 'TopNav_Contact_Editorial', window.location.href]);">Editorial</a>
</li>
複数のファイルから繰り返し削除する必要があります。だから私はLinuxのsedで正規表現を使用するのが最善の選択だと思います。いくつかの方法を試しましたが、解決策が見つかりませんでした。 index.htmlファイルには他のタグがありますが、<li>
とにかく編集しないでください。上記のタグのみを削除する必要があります。
よろしくお願いします。
答え1
ドキュメントの断片が正しい形式のXHTMLファイルの一部であると仮定すると、プロパティ値は、次を使用するノードを含むli
すべてのノードを削除できます。a
href
https://forward.global.ssl.fastly.net/contributoragreements/
xmlstarlet
xmlstarlet ed --delete '//li[a/@href = "https://forward.global.ssl.fastly.net/contributoragreements/"]' file.xhtml
文書が正しい形式のXHTML文書でない場合は、最初に回復を試みることができます。
xmlstarlet fo --recover --html file.html |
xmlstarlet ed --delete '//li[a/@href = "https://forward.global.ssl.fastly.net/contributoragreements/"]'
index.html
回転したディレクトリ構造内のすべてのファイルに対してこのコマンドを実行するには、top-dir
次xmlstarlet
のように呼び出しますfind
。
find top-dir -type f -name index.html -exec sh -c '
tmpfile=$(mktemp)
for pathname do
cp "$pathname" "$tmpfile"
xmlstarlet fo --recover --html "$tmpfile" |
xmlstarlet ed --delete "//li[a/@href = \"https://forward.global.ssl.fastly.net/contributoragreements/\"]" >"$pathname.new"
done
rm -f "$tmpfile"' sh {} +
上記のコードは、index.html.new
見つかった各ファイルに対してindex.html
新しいファイルを生成します。上記のコマンドから実行を削除する前に、これらのファイルを調べて、.new
正常に見えることを確認する必要があります。
明らかにあなたも入らなければなりませんコピーテスト中にデータがバックアップされました。