2

ファイルで使用されている句読点をすべて見つけて.txt、それぞれの出現回数をカウントしたいと思います。どうすればこれを行うことができますか?私はこれが初めてですが、学ぼうとしています!これは宿題ではありません!私は今、研究をしていgrepますsed

4

2 に答える 2

2
$ perl -CSD -nE '$seen{$1}++ while /(\pP)/g; END { say "$_ $seen{$_}" for keys %seen }'  sometextfile.utf8

のように

$ perl -CSD -nE '$seen{$1}++ while /(\pP)/g; END { say "$_ $seen{$_}" for keys %seen }' programming_perl_4th_edition.pod | sort -k2rn
, 21761
. 19578
; 10986
( 8856
) 8853
- 7606
: 7420
" 7300
_ 5305
’ 4906
/ 4528
{ 2966
} 2947
\ 2258
@ 2121
# 2070
* 1991
' 1715
“ 1406
” 1404
[ 1007
] 1003
% 881
! 838
? 824
& 555
— 330
‑ 72
– 41
‹ 16
› 16
‐ 10
⁂ 10
… 8
· 3
「 2
」 2
« 1
» 1
‒ 1
― 1
‘ 1
• 1
‥ 1
⁃ 1
・ 1

句読点だけでなく、句読点や記号も必要な場合[\pP\pS]は、パターンで使用してください。ただし、古いスタイルのPOSIXクラスは何をするにしても使用しないでください。

于 2011-11-04T00:44:34.957 に答える
2

sed、tr、sort、uniqを使用します(perlは使用しません)。

sed -E 's/[^[:punct:]]//g;s/(.)/\1x/g' myfile.txt | tr 'x' '\n' | sort | uniq -c

私はこの方法(sed + tr)でそれを行ったので、UNIXとMacの両方で動作します。Macではsedコマンドに改行を埋め込む必要がありますが、unixではを使用できます\n。このように、それはどこでも機能します。

これは非MacUNIXで機能します。

sed -E 's/[^[:punct:]]//g;s/(.)/\1\n/g' myfile.txt | sort | uniq -c
于 2011-11-04T00:54:31.307 に答える