0

私は文字列を持っています、言いましょう:

<lic><ic>This is a string</ic>, welcome to my blog.</lic>

sedを使用して、<ic></ic>タグ、およびリテラルタグ<lic></lic>

これを行うための最速の方法は何ですか?私はsedにとても慣れていません。これはawkでどのように行われますか?私はawkが列のようなテキストにはるかに優れていることを知っているので、sedの使い方を学びたいと思っています。

事前に感謝します、どんな助けでも常に感謝しています!

4

4 に答える 4

3

タグのみを削除します。

sed -i.old -r 's;</?l?ic>;;g' infile
于 2012-05-22T04:18:57.010 に答える
3
sed -e 's%</\{0,1\}l\{0,1\}ic>%%g'

これは、 PCREに相当するものを記述する\{0,1\}標準的な方法です。正規表現はビットを区切るために使用します。次に、入力の各行でグローバルに、スラッシュが続く可能性があり、スラッシュが続く可能性があり、その後に続いて何も置き換えられない可能性があります。sed?%<lic>

の一部のバージョンではsed、正規表現の代替システムを指定できますが、これはどこでも機能します。

于 2012-05-22T04:21:33.450 に答える
2

sed複雑にする必要はありません。ここにあなたがやりたいことをする2つの簡単な方法があります。

これはそれらの正確なパターンと一致し、それらをグローバルに削除します。

sed -e "s%\(<lic>\|</lic>\|<ic>\|</ic>\)%%g" file.txt

sed必要に応じて、次を使用して複数の式を設定できることを忘れないでください。

sed -e "s%<lic>%%" -e "s%</lic>%%" -e "s%<ic>%%" -e "s%</ic>%%" file.txt

于 2012-05-22T04:56:10.960 に答える
1

タグの構造は、左角かっこで、右角かっこではない文字がいくつか続き、最後に右角かっこが続きます。それでは、そのように書きましょう。

sed 's/<[^>]*>//g'
于 2012-05-22T04:19:17.260 に答える