2

我想找到所有使用我的文件的标点符号.txt并计算每个标点符号的出现次数。我该怎么做?我是新手,但我正在努力学习!这不是家庭作业!我一直在研究grepsed现在。

4

2 回答 2

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. 这样它就可以在任何地方工作。

这将适用于非mac unix:

sed -E 's/[^[:punct:]]//g;s/(.)/\1\n/g' myfile.txt | sort | uniq -c
于 2011-11-04T00:54:31.307 回答
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 回答