Perl正则表达式匹配前8位数

时间:2014-06-08 18:20:27

标签: perl

输出显示所有数字,但我只需要前8位数字。谁能告诉我如何获得它们?

我尝试了什么:

[root@localhost ~]# perl -e 'open (DATA, "test.txt");while (<DATA>){s/[^\d]+//g;print $_,$/;}'
20140410223029
20140411043251
20140409150003
20120801114354

2 个答案:

答案 0 :(得分:3)

仅打印前8位,

perl -lne 'print /^(\d{8})/' test.txt

或者如果你想跳过正则表达式不匹配的行,

perl -lne 'print $1 if /^(\d{8})/' test.txt

答案 1 :(得分:1)

您只需拨打substr

即可
perl -lne 'print substr $_, 0, 8' test.txt

或者

perl -lpe 'substr($_, 8) = ""' test.txt