次の行を含むファイルがあります。
<li><b> Some Text:</b> More Text </li>
htmlタグを削除し、</b>
タグをダッシュに置き換えて、次のようにします。
Some Text:- More Text
sedを使用しようとしていますが、適切な正規表現の組み合わせが見つかりません。
すべての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
使用する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