我使用以下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上的三个单词)
耶尔
答案 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 '$='