Rwd*_*dxr 2 sed awk text-processing
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
Run Code Online (Sandbox Code Playgroud)
我需要在$不包括$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 $***
Run Code Online (Sandbox Code Playgroud)
我已经能够替换最后一位或最后 2 位,但不是$. 我试过sed和awkgsub 但我尝试的任何东西似乎都不起作用。
您可以使用sed不触及选项卡/空格或字段意图的优势:
sed -E ':a s/(\$\**)[^*]/\1*/; ta' infile
Run Code Online (Sandbox Code Playgroud)
将每个替换($<zero-or-more-*>)[<non-*-character>]为$<zero-or-more-*><plus-additional-*-added>( \1*;\1是对sed定义中第一个匹配组的反向引用(...)),直到所有<non-*-character>s 都替换为*s。
有点复杂,但如果您只想在最后一个字段上强制更改,您可以这样使用命令:
sed -E ':a s/(\$\**)[^*]([^$]*)$/\1*\2/; ta' infile
Run Code Online (Sandbox Code Playgroud)