9

次の行を含むファイルがあります。

<li><b> Some Text:</b> More Text </li>

htmlタグを削除し、</b>タグをダッシュ​​に置き換えて、次のようにします。

Some Text:- More Text

sedを使用しようとしていますが、適切な正規表現の組み合わせが見つかりません。

4

2 に答える 2

17

すべてのHTMLタグを厳密に削除したいが、同時にタグを。に置き換えるだけの場合は、2つの単純なコマンドをパイプでチェーンできます。</b>-sed

cat your_file | sed 's|</b>|-|g' | sed 's|<[^>]*>||g' > stripped_file

これにより、すべてのファイルの内容が、のsed置換を処理する最初のコマンド</b>に渡されます-。次に、その出力がにパイプされ、sedすべてのHTMLタグが空の文字列に置き換えられます。最終的な出力は新しいファイルに保存されますstripped_file

@Steveの他の回答と同様の方法を使用して、sed's-eオプションを使用して、式を単一の(パイプされていないコマンド)にチェーンすることもできます。を追加することで、、または新しいファイル-iを必要とせずに、元のファイルの内容を読み込んで置き換えることもできます。cat

sed -i -e 's|</b>|-|g' -e 's|<[^>]*>||g' your_file

これにより、上記のchained-commandと同じように置換が行われますが、今回は入力ファイルの内容が直接置換されます。代わりに新しいファイルに保存するには、を削除して末尾(または選択したファイル名)に-i追加します。> stripped_file

于 2012-10-04T01:24:47.033 に答える
0

使用する1つの方法GNU sed

sed -e 's/<\/b>/-/g' -e 's/<[^>]*>//g' file.txt

例:

echo "<li><b> Some Text:</b> More Text </li>" | sed -e 's/<\/b>/-/g' -e 's/<[^>]*>//g'

結果:

 Some Text:- More Text
于 2012-10-04T01:25:02.180 に答える