sedを使用してすべてのHTMLタグを削除する方法は?

sedを使用してすべてのHTMLタグを削除する方法は?

本当に良いものを見つけました。地図時間いくつかの実際のsedケースを説明してください。

最後の項目(10番)は次のとおりです。

$ sed -e 's/<[^>]*>//g'
This <b> is </b> an <i>example</i>.
This  is  an example.

誰でもこの問題を解決するのに役立ちますか?

私の状況をまとめると、次のようになります。 1.私が理解したのは、sedに「正規表現を正規表現2にグローバルs/x/y/gに変更するように指示するコマンドです。このフラグは、次のページでsedを一種の「対話モード」に切り替えるようです。xy-eman

-e command
             Append the editing commands specified by the command argument to
             the list of commands.

「コマンドリスト」が提供されていないようですが、むしろsed「引数リスト」が提供されているようで、わからないので、これは私にとって混乱しているようです。 3. 最初で唯一のものは<単一文字の正規表現に過ぎず、<最後の正規表現は>単一文字の正規表現にすぎません。 4. sed は sed にその前にあるパターンが 0 個以上一致するように指示する> ことを知っています。*、この場合は括弧内にあります。しかし、ここは本当に混乱しています。誰かが[^>]*私にもっと内容を開くことができますか?

だから私が本当に混乱していることは次のとおりです。

  • 普通の英語で何が起こっていますか-e
  • どのように進行していますか[^>]*

ありがとうございます:)

答え1

順序s/<[^>]*>//g注文する処理エンジンにsed「検索と交換」を実行するように指示します。つまり-e 's/..../g'、"この検索と置換コマンドをsed

1つのコマンドで複数のコマンドを実行すると、より意味がある可能性があります。

sed -e '1d' -e '$d'

sed処理には、「最初の行の削除」と「最後の行の削除」という2つのコマンドが追加されます。

[^>]「を除いて」を意味する正規表現です。>

したがって[^>]*、「を除くすべての文字が0個以上あることを意味します。>

so は<[^>]*>a <、必要に応じて後ろに非>、後ろを意味します>

次に、これをシーケンスが何も置き換えられない検索と置換コマンドに入れます。それから連続して数回繰り返します(最後の時間g)。

これは、文字列がhello <abc> there <def>最初に<abc><次にabc「zero or more not >」、次に「」>)と一致し、それをnullに変更してからこの操作を再実行することを意味します<def>。結果は次のとおりですhello there

(追加のスペースは削除されませんのでご注意ください!)

答え2

範囲を2点に制限します。

  • その後に編集コマンドがあることを知らせます-esed

  • [^>]*0個以上の文字に一致するパターンです。>特徴

編集コマンドは言う

's/<[^>]*>//g'

一致するコンテンツの変更<、最初の文字まで任意の数の文字が続きます。>到着何もない。そして、一致する回数だけ繰り返します。

関連情報