同じ行の複数の繰り返しパターン内でテキストを置き換える

同じ行の複数の繰り返しパターン内でテキストを置き換える

私はこのようなものを持っています。

I like reading **books** and taking **notes**

私はこのようなものを手に入れようとしています。

I like reading <b>books</b> and taking <b>notes</b>

しようとします。

sed 's/\*\*\(.*\)\*\*/<b>\1<\/b>/g' a.txt

これは返されます。

I like reading <b>books** and taking **notes</b>

全体のラインを包みます。バイパスする方法はありますか?

注:私はsedのGNUバージョンを使用しています。

ベストアンサー1

GNUを使用して次のことができますsed

$ sed 's:\*\*\([^*]*\)\*\*:<b>\1</b>:g' a.txt 
I like reading <b>books</b> and taking <b>notes</b>

パターンはワイルドカードではなく\*\*\([^*]*\)\*\*文字列をキャプチャします。最後に、タグ間でキャプチャされたグループ自体を置き換えることができます。**...***

おすすめ記事