我使用下面的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上的三个单词)
雅艾尔
发布于 2010-06-29 14:41:09
首先,你的awk效率很低。试试这个:
awk '$4{c++}END{print c}' file为什么你想把它放在sed里呢?这就是awk擅长的地方。如果你真的想在sed中使用它,我想应该是这样的:
sed '/^\s*\S*\s*\S*\s*\S*\s*$/d' file | wc -lawk解释:在第四个字段不为空的每一行中,递增c。在末尾,打印c。
sed解释:删除与regexp匹配的每一行。然后使用wc对sed输出的行数进行计数。regexp基本上表示该行中最多可以有两个空白组,不包括开头和结尾的空格组,这意味着该行中最多可以有3个字段。
发布于 2010-06-29 14:52:19
还可以使用cut:
cut -f 5 -d' ' file | wc -w选择5.列(由于前导空白,第一列为空)。分隔符为空。
发布于 2011-12-13 09:00:39
这可能对你有用:
sed 's/ *[^ ]*/&/4;t;d;' file | sed -n '$='https://stackoverflow.com/questions/3138299
复制相似问题