複数のパターンに一致するsedの行だけを変更する方法は?

複数のパターンに一致するsedの行だけを変更する方法は?
$ echo -e 'CH12\nCH23au' | sed '/^CH/s=^=<b>='
<b>CH12
<b>CH23au

CHbyで始まる行を一致させることができることを知っていますが、複数のパターンをどのように一致^CHさせることができますか?

例:

入力する:

CH12
CH23au

出力:

CH12
<b>CH23au

<b>特定の場所^CHと行にのみ配置する方法はau

ベストアンサー1

合計の順序は固定されているため、その行CHの先頭に表示する必要がある場合は見つかります。CHau^CH.*au

$ echo -e 'CH12\nCH23au' | sed '/^CH.*au/s=^=<b>='
CH12
<b>CH23au
$

両方のモードの順序が固定されていない場合は、次のようにできます。

sed -e '/pattern1/{;/pattern2/s/old/new/;}'

しかし、Perlソリューションは

perl -pe 'if (/pattern1/ && /pattern2/) {s/old/new/;}'

読みやすくすることもできます。

おすすめ記事