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を$
試しましたが、何も機能しないようです。sed
awk
ベストアンサー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