假设我有一个像下面这样的文件:
我想将所有的十进制数存储在哈希表中。
我正在查看 this,这个很好用:
尽管我可以使用awk完成这个任务,但我只想用Perl来完成。
此外,输出的顺序对我不重要。
我想将所有的十进制数存储在哈希表中。
hello world 10 20
world 10 10 10 10 hello 20
hello 30 20 10 world 10
我正在查看 this,这个很好用:
> perl -lne 'push @a,/\d+/g;END{print "@a"}' temp
10 20 10 10 10 10 20 30 20 10 10
我需要做的是统计每个正则表达式出现的次数。
为此,我认为最好将所有匹配项存储在哈希表中,并为每个键分配递增的值。
所以我尝试了:
perl -lne '$a{$1}++ for ($_=~/(\d+)/g);END{foreach(keys %a){print "$_.$a{$_}"}}' temp
这将给我一个输出:
> perl -lne '$a{$1}++ for ($_=~/(\d+)/g);END{foreach(keys %a){print "$_.$a{$_}"}}' temp
10.4
20.7
有人能纠正我哪里错了吗?
我期望的输出是:
10.7
20.3
30.1
尽管我可以使用awk完成这个任务,但我只想用Perl来完成。
此外,输出的顺序对我不重要。
for
和while
的优秀的实际演示,虽然我可能会选择@melpomene的方法,因为我从来不确定在循环或传递时$1
,$2
等会做什么。 - G. Cito