首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sed +统计字段3上的字数

sed +统计字段3上的字数
EN

Stack Overflow用户
提问于 2010-06-29 14:22:14
回答 3查看 468关注 0票数 1

我使用下面的awk来计算字段4中出现的所有单词

代码语言:javascript
复制
  awk '{print $4}'  file | awk '{print NF}' | grep -c 1

我们怎样才能在sed中达到同样的效果呢?

文件示例:

代码语言:javascript
复制
 1 2 3 4
 1 2 
 1 2 3 4 5
 1 2
 1 2 3
 1 2 3 4

从文件sed应该返回结果3(字段4上的三个单词)

雅艾尔

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-06-29 14:41:09

首先,你的awk效率很低。试试这个:

代码语言:javascript
复制
awk '$4{c++}END{print c}' file

为什么你想把它放在sed里呢?这就是awk擅长的地方。如果你真的想在sed中使用它,我想应该是这样的:

代码语言:javascript
复制
sed '/^\s*\S*\s*\S*\s*\S*\s*$/d' file | wc -l

awk解释:在第四个字段不为空的每一行中,递增c。在末尾,打印c。

sed解释:删除与regexp匹配的每一行。然后使用wcsed输出的行数进行计数。regexp基本上表示该行中最多可以有两个空白组,不包括开头和结尾的空格组,这意味着该行中最多可以有3个字段。

票数 1
EN

Stack Overflow用户

发布于 2010-06-29 14:52:19

还可以使用cut

代码语言:javascript
复制
cut -f 5 -d' ' file | wc -w

选择5.列(由于前导空白,第一列为空)。分隔符为空。

票数 0
EN

Stack Overflow用户

发布于 2011-12-13 09:00:39

这可能对你有用:

代码语言:javascript
复制
sed 's/ *[^ ]*/&/4;t;d;' file | sed -n '$='
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3138299

复制
相关文章

相似问题

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