文字列の後の文字を置き換える

文字列の後の文字を置き換える
S-123-P Bash Pocket Ref.        2010    Cengage Learning    $55
E-P234  Python Pocket Ref.      2012    Cengage Learning    $45
55-MNP  Unix System Programming 2001    Sybex               $230

$$with を除いて数字を変更する必要があるため、*出力は次のようになります。

S-123-P Bash Pocket Ref.        2010    Cengage Learning    $**
E-P234  Python Pocket Ref.      2012    Cengage Learning    $**
55-MNP  Unix System Programming 2001    Sybex               $***

最後の数字または最後の2桁を変更できましたが、gsubを$試しましたが、何も機能しないようです。sedawk

ベストアンサー1

sedタブ/スペースやフィールドの意図に触れないという利点を享受できます。

sed -E ':a s/(\$\**)[^*]/\1*/; ta' infile

($<zero-or-more-*>)[<non-*-character>]すべてのsがsに変わるまで、それぞれを$<zero-or-more-*><plus-additional-*-added>\1*;は\1定義で最初に一致するグループの逆参照です)に置き換えます。sed(...)<non-*-character>*


少し複雑ですが、最後のフィールドだけを強制的に変更するには、次のようにコマンドを使用します。

sed -E ':a s/(\$\**)[^*]([^$]*)$/\1*\2/; ta' infile

おすすめ記事