以下のようなファイルがあるとしましょう:
そして、すべての10進数をハッシュに格納したいと思います。
hello world 10 20
world 10 10 10 10 hello 20
hello 30 20 10 world 10
私はこれを見ていました
そしてこれはうまくいきました:
> 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でのみ実行したいと思います。
また、出力の順序は私には関係ありません。