Regex Linux CLI更改价格(awk或sed?)
我将价格字符串格式化为Regex Linux CLI更改价格(awk或sed?),regex,linux,bash,awk,sed,Regex,Linux,Bash,Awk,Sed,我将价格字符串格式化为 $25.00 在各种html文件中。我想使用Linux命令行(BASH,可能是awk或sed)将每个价格提高一定的金额(本例中为3美元) 简而言之,我需要找到$nn.00并将其替换为$(n+3)n.00 开始把它放在一起,但我不知道如何添加3sed-r/([^$][0-9][0-9][.]00)file.html 谢谢 样本数据: $ cat prices_file.html <p>$25.00</p><p>$78.00</p&g
$25.00
在各种html文件中。我想使用Linux命令行(BASH,可能是awk或sed)将每个价格提高一定的金额(本例中为3美元)
简而言之,我需要找到$nn.00并将其替换为$(n+3)n.00
开始把它放在一起,但我不知道如何添加3sed-r/([^$][0-9][0-9][.]00)file.html
谢谢 样本数据:
$ cat prices_file.html
<p>$25.00</p><p>$78.00</p>
<p>$2.00</p>
<p>$101.00</p>
之后:
$ cat prices_file.html
<p>$28.00</p><p>$81.00</p>
<p>$5.00</p>
<p>$104.00</p>
$cat prices\u file.html
28美元81美元
$5.00
104.00美元
上面的例子是最常见的perl替换用例之一。
它还将备份您的原始文件(位于prices\u file.html.bak
),以防您对其进行不必要的操作
可能不太常见的是求值修饰符(s///e
),它允许您以替换方式执行任意perl代码。
全局修饰符(s///g
)告诉perl替换所有出现的值(这里在第行的上下文中,如果删除g
修饰符,则只替换给定样本数据第一行中的第一个价格)
在
sprintf(\$%.2f,$1+3)
替换中,$1
指的是匹配的组[(\d+.\d+)
。太好了,谢谢!我真的很感谢详细的解释和奖金文件备份功能以及。
$ cat prices_file.html
<p>$28.00</p><p>$81.00</p>
<p>$5.00</p>
<p>$104.00</p>