regex - 查找文件中的数字并使用 perl 更改其值

标签 regex perl

我有一个包含一些数据的文件,但有一堆恼人的数字小于 1,我想将其更改为 1,而不是手动执行。我想知道你会如何在 Perl 中做到这一点。

我尝试过使用这样的东西

perl -pe 's/\d+/$& < 1 ? $&=1 : $&/g' file

这基本上只是查找所有数字,然后检查它们是否小于 1。如果是,则将其设置为 1,如果不是,则将其保留。不幸的是,它不允许 $&=1 发生,因为它是只读的。 perl中还有其他东西可以达到这种效果吗? 输入示例:

this 1 is a 7 file that
has 0.5 some numbers 4
that are 0.3 less 0.1 than 0.9 
one as you see 1.1

输出:

this 1 is a 7 file that
has 1 some numbers 4
that are 1 less 1 than 1 
one as you see 1.1

最佳答案

您可以只匹配小于一的数字..并替换为1:

perl -pe 's/\b0\.\d+/1/g' file

参见DEMO

关于regex - 查找文件中的数字并使用 perl 更改其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30848536/

相关文章:

java - 检查 |或||正则表达式

JavaScript:正则表达式匹配此字符串

JavaScript 正则表达式 - 从无限数量的大括号内获取字符串

根据预告片,Perl,无法阅读 PDF 交叉引用部分

perl - 如何解析命令行参数?

python - 使用正则表达式删除相对行

perl open() 总是返回 sh 的 PID 而不是底层程序

perl - API Wrapper 架构最佳实践

linux - shell 脚本内的 perl -p -i -e

javascript - 使用多种模式构建跨度标签的正则表达式