sed +计算字段3上的单词

时间:2010-06-29 06:22:14

标签: sed

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

  awk '{print $4}'  file | awk '{print NF}' | grep -c 1

我们如何在sed中采用相同的方法?

档案示例:

 1 2 3 4
 1 2 
 1 2 3 4 5
 1 2
 1 2 3
 1 2 3 4

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

耶尔

3 个答案:

答案 0 :(得分:1)

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

awk '$4{c++}END{print c}' file

为什么要在sed,BTW?这是awk做得好的。如果你真的想要它sed,我想这样的事情:

sed '/^\s*\S*\s*\S*\s*\S*\s*$/d' file | wc -l

awk解释:在第四个字段为非null的每一行中,增加c。最后,打印c。

sed解释:删除与正则表达式匹配的每一行。然后使用wc计算sed输出的行。 regexp基本上说行中最多可以有两个空格组,不计算初始和最后一个,这意味着行中最多可以有3个字段。

答案 1 :(得分:0)

cut也可以使用:

cut -f 5 -d' ' file | wc -w

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

答案 2 :(得分:0)

这可能对您有用:

sed 's/ *[^ ]*/&/4;t;d;' file | sed -n '$='