Perl one-liner 提取字符组

标签 perl

我试图用 Perl 单行提取一组字符,但我没有成功:

echo "hello_95_.txt" | perl -ne 's/.*([0-9]+).*/\1/'

不返回任何内容,而我希望它返回 95 .我怎样才能用 Perl 做到这一点?

更新:

请注意,与建议的重复项相反,我对如何从命令行执行此操作感兴趣。当然,这看起来是一个细微的差别,但它并不简单,除非您已经知道如何有效地使用 Perl 单行程序。

既然人们都在问,最终我想学习使用 Perl 来编写强大的单行代码,但最直接的是我需要一个单行代码来从大型文本文件的每一行中提取连续的数字。

最佳答案

perl -pe's/\D*(\d+).*/$1/'

或者
perl -nE'/\d+/&&say$&'

或者
perl -nE'say/(\d+)/'

或者
perl -ple's/\D//g'

或者可能
perl -nE'$,=" ";say/\d+/g'

关于Perl one-liner 提取字符组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17665240/

相关文章:

perl - Perl 单行程序中的逆多行 grep

linux - 在 linux 中执行 perl 脚本给出 :Exec format error. Wrong Architecture

perl - perl 中的这个编译错误是什么?我没有看到语法问题

perl - Perl-while(<>)文件处理

perl - 如何删除与 Perl 中某个模式匹配的行?

XML::复杂散列的简单输出元素顺序

perl - 为什么某些全局符号需要显式的包名称

perl - 如何与 hg repo 中已安装的库隔离以进行测试?

perl - 如何将 "lazy load"包用作委托(delegate)?

regex - 使用 Perl 验证年份范围