Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Linux CLI更改价格(awk或sed?)_Regex_Linux_Bash_Awk_Sed - Fatal编程技术网

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

开始把它放在一起,但我不知道如何添加3
sed-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>