次のようなコンテンツを含むHTMLページがたくさんあります。
<div class="wrapper">
<div class="aaa">
...lot of html1 here like div's/spans etc..
</div> <!-- end aaa -->
<div class="bbb">
...lot of html2 here
</div><!-- end bbb -->
</div>
divをそのコンテンツと共にaaaクラスとbbbクラスに完全に置き換える必要があります。
だからそれは次のようになります:
<div class="wrapper">
<div class="bbb">
...lot of html2 here
</div><!-- end bbb -->
<div class="aaa">
...lot of html1 here
</div> <!-- end aaa -->
</div>
メモ:
1) ブロック間の空行はオプションです。 2)HTMLには正確なandペア
のみが含まれているため、次のような状況は不可能です。aaa
bbb
aaa
bbb
aaa
それでは、どのパラメータを渡すべきかを提案できますかsed
?find
すべてのHTMLファイルを見つけて、sed
実行パラメータとして実行するために使用します。
find . -iname "*.html" -exec sed -i '' 's/WHAT IS HERE / AND HERE /g' {} \;
これはできませんが、sed
可能であるとしましょう。awk
あなたの期待を達成するための最善の方法についてあなたの考えを共有していただきありがとうございます。
修正する:
以下は実際のケースへのリンクです。 http://pastebin.com/mdhJ9rtL
ベストアンサー1
aaa
前の部分をbbb
後ろに置くには、次の手順を実行します。
sed -i '/<div class="aaa">/{
:1
/<\/div> <\!-- end aaa -->/!{N;b 1}
/<\/div> <\!-- end aaa -->/{N;h}
d}
/<\/div><\!-- end bbb -->/{n;G}' *html