首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用grep或sed来计数文件中的单词?

用grep或sed来计数文件中的单词?
EN

Stack Overflow用户
提问于 2017-04-09 13:20:16
回答 4查看 2.4K关注 0票数 0

下面是测试示例文件-rime.txt。

rime.txt

1.清点档案内的所有字数。

代码语言:javascript
复制
wc -w rime.txt
4081 rime.txt
awk 'BEGIN{num=0}{split($0, A);n=length(A);num=num+n;}END{print num}'  rime.txt
4081

grep -Ec  '\w' rime.txt
672

为什么总单词是672与grep?

怎么用sed数?

2.每行数字

代码语言:javascript
复制
awk '{split($0, A);print length(A)}'  rime.txt

怎么用sed来做呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-04-09 15:01:57

grep是可数线,而不是单词,您永远不会为此使用sed,因为sed是用于单个行上的简单替换,仅此而已。

还有,那些awk脚本太荒谬了。编写第一个文件的正确方法是awk '{num+=NF} END{print num+0}'或使用GNU awk -v RS='[[:space:]]+' 'END{print NR+0}',第二个方法是awk '{print NF}'

票数 4
EN

Stack Overflow用户

发布于 2017-04-09 13:28:07

因为它只是计算行,而不是单词。从手册页:

-c,--计数抑制正常输出;相反,为每个输入文件打印匹配行数。使用-v,--反向匹配选项(见下文),计数非匹配行.

正如您在你提供的链接上看到的,有834行和672个SLOC (源代码行),最后一个度量是grep使用的。

票数 1
EN

Stack Overflow用户

发布于 2017-04-09 16:15:30

为了澄清你对漏字的疑虑,举个小例子-

代码语言:javascript
复制
$cat ff
hello vipin
kumar
good night

清楚,3行,5个字。

先试试wc -w -

代码语言:javascript
复制
$wc -w ff
5 ff  

你用过的grep命令-

代码语言:javascript
复制
$grep -Ec '\w' ff
3 

在你的例子中,全线计数-

代码语言:javascript
复制
$wc -l < file.txt 
833

空白行总数-

代码语言:javascript
复制
$grep '^$' file.txt |wc -l
161

非空白行总数-

代码语言:javascript
复制
$grep -v '^$' file.txt |wc -l
672

这就是你看到672行的原因。

代码语言:javascript
复制
$echo $(expr 833 - 161)
672

正如专家已经提到的,您不应该在这个操作中使用sed,grep \w将给出您的行计数,而不是单词计数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43307160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档