本当に良いものを見つけました。地図時間いくつかの実際の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を一種の「対話モード」に切り替えるようです。x
y
-e
man
-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点に制限します。
その後に編集コマンドがあることを知らせます
-e
。sed
[^>]*
0個以上の文字に一致するパターンです。>
特徴
編集コマンドは言う
's/<[^>]*>//g'
一致するコンテンツの変更<
、最初の文字まで任意の数の文字が続きます。>
到着何もない。そして、一致する回数だけ繰り返します。