Linux CLI 更改价格(awk 还是 sed?)
Linux CLI change price (awk or sed?)
我将价格字符串格式化为
.00
在各种 html 文件中。我想使用 Linux 命令行(BASH,大概是使用 awk 或 sed)将每个价格提高一定的金额(在本例中为 3 美元)。
简而言之,我需要找到 $nn.00 并将其替换为 $(n+3)n.00
开始拼起来不知道怎么加3sed -r 's/([^$][0-9][0-9][.]00). ????' file.html
谢谢!
示例数据:
$ cat prices_file.html
<p>.00</p><p>.00</p>
<p>.00</p>
<p>1.00</p>
Perl 解决方案:
$ perl -pi.bak -e 's/$(\d+\.\d+)/sprintf("$%.2f", + 3)/eg' prices_file.html
之后:
$ cat prices_file.html
<p>.00</p><p>.00</p>
<p>.00</p>
<p>4.00</p>
以上示例是最常见的带替换的 perl 用例之一。
它还会备份您的原始文件(在 prices_file.html.bak
中),以防您对其进行不必要的操作。
可能不太常见的是求值修饰符 (s///e
),它允许您在替换中执行任意 perl 代码。
全局修饰符 (s///g
) 告诉 perl 替换所有出现的地方(这里是在行的上下文中,如果你删除 g
修饰符 if 只会替换给定样本数据第一行中的第一个价格)。
在sprintf("$%.2f", + 3)
替换中,</code>指匹配组[<code>(\d+\.\d+)
].
我将价格字符串格式化为
.00
在各种 html 文件中。我想使用 Linux 命令行(BASH,大概是使用 awk 或 sed)将每个价格提高一定的金额(在本例中为 3 美元)。
简而言之,我需要找到 $nn.00 并将其替换为 $(n+3)n.00
开始拼起来不知道怎么加3sed -r 's/([^$][0-9][0-9][.]00). ????' file.html
谢谢!
示例数据:
$ cat prices_file.html
<p>.00</p><p>.00</p>
<p>.00</p>
<p>1.00</p>
Perl 解决方案:
$ perl -pi.bak -e 's/$(\d+\.\d+)/sprintf("$%.2f", + 3)/eg' prices_file.html
之后:
$ cat prices_file.html
<p>.00</p><p>.00</p>
<p>.00</p>
<p>4.00</p>
以上示例是最常见的带替换的 perl 用例之一。
它还会备份您的原始文件(在 prices_file.html.bak
中),以防您对其进行不必要的操作。
可能不太常见的是求值修饰符 (s///e
),它允许您在替换中执行任意 perl 代码。
全局修饰符 (s///g
) 告诉 perl 替换所有出现的地方(这里是在行的上下文中,如果你删除 g
修饰符 if 只会替换给定样本数据第一行中的第一个价格)。
在sprintf("$%.2f", + 3)
替换中,</code>指匹配组[<code>(\d+\.\d+)
].