上記のhtmlタグをsedで削除するにはどうすればよいですか?
例:
<div id="header"><span id="navbar">... Content ...</span></div>
私が試したこと:
sed 's!<div id=\"header\">.*\?</div>!!g'
これは、この正規表現リファレンスに従って機能するはずです
上記のhtmlタグをsedで削除するにはどうすればよいですか?
例:
<div id="header"><span id="navbar">... Content ...</span></div>
私が試したこと:
sed 's!<div id=\"header\">.*\?</div>!!g'
これは、この正規表現リファレンスに従って機能するはずです
これはあなたのために働くかもしれません:
sed '
> /<div id="header"><span id="navbar">/{ # search for start tags
> s//\n/ # replace start tags with newline
> :a # label a
> /\n<\/span><\/div>/bb # search for end tags and if so goto label b
> s/\n./\n/ # end tags not found bump along a character
> ta # goto label a if last substitution ok
> :b # label b
> s/// # delete end tags and newline
> /^$/d # check for empty line and if so delete
> }' file
注意これは、開始/終了タグが同じ行にあることを期待しています。
htmlタグとその内容をファイルから削除することが目的の場合は、次のコマンドを試すことができます。
注:次のコマンドはすべてインライン編集です。変更したいファイルは、このコマンドを実行するとすぐに変更されます。テストする前に、ファイルをバックアップしてください。
タグがすべて1行にある場合は、次のことを試すことができます。
sed -i 's/<div id=\"header\"><span id=\"navbar\".*<\/span><\/div>//g' /yourfile
以下の例のようにタグが複数行にある場合は、次のコマンドを試してください。
<div id="header"><span id="navbar">
... Content ...
</span></div>
sed -i '/<div id=\"header\"><span id=\"navbar\">/,/<\/span><\/div>/g' /yourfile
注:OS Xで作業している場合は、(sed -i)を(sed -i'')に変更する必要があります。
sed
サポートしていません.*?
(貪欲なマッチング)。(super sed)
を試すことができます。ssed
sed の場合は次のようになります。
testers="<div id="header"><span id=\"navbar\">... Content ...</span> some stuf </div>"
echo $testers| sed -E 's/<[\w ="/]+>// g'
ssed
魔女手段(スーパーsed)の代わりに解決するとsed
、どのPOSIXシステムにも非常に簡単にインストールできるので、ここに行きます。
testers="<div id="header"><span id=\"navbar\">... Content ...</span> some stuf </div>"
echo $testers| ssed -R -e 's/<[\w ="/]+>// g'
結果はでした。
... Content ... some more stuf
乾杯。