-1

上記のhtmlタグをsedで削除するにはどうすればよいですか?

例:

<div id="header"><span id="navbar">... Content ...</span></div>

私が試したこと:

sed 's!<div id=\"header\">.*\?</div>!!g'

これは、この正規表現リファレンスに従って機能するはずです

4

4 に答える 4

2

これはあなたのために働くかもしれません:

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

注意これは、開始/終了タグが同じ行にあることを期待しています。

于 2012-04-23T14:53:43.447 に答える
0

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'')に変更する必要があります。

于 2012-04-23T20:12:42.633 に答える
0

sedサポートしていません.*?(貪欲なマッチング)。(super sed)
を試すことができます。ssed

于 2012-04-23T11:34:39.280 に答える
0

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

乾杯。

于 2012-06-25T06:17:12.467 に答える