sed+;数一数第三栏的单词
我使用以下awk来计算字段4中出现的所有单词sed+;数一数第三栏的单词,sed,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上有三个单词) yael首先,您的awk效率很低。试试这个: awk '$4{c++}END{print c}' file 顺便说一句,为什么要在sed中使用它?这
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上有三个单词)
yael首先,您的
awk
效率很低。试试这个:
awk '$4{c++}END{print c}' file
顺便说一句,为什么要在sed
中使用它?这就是awk
做得很好的地方。如果您真的希望它出现在sed
中,我猜是这样的:
sed '/^\s*\S*\s*\S*\s*\S*\s*$/d' file | wc -l
awk
说明:在第四个字段为非空的每一行中,递增c。最后,打印c
sed
说明:删除与regexp匹配的每一行。然后用wc
计算sed
输出的行数。regexp基本上说,行中最多可以有两个空格组,不包括初始空格组和最终空格组,这意味着行中最多可以有3个字段。首先,您的awk
效率很低。试试这个:
awk '$4{c++}END{print c}' file
顺便说一句,为什么要在sed
中使用它?这就是awk
做得很好的地方。如果您真的希望它出现在sed
中,我猜是这样的:
sed '/^\s*\S*\s*\S*\s*\S*\s*$/d' file | wc -l
awk
说明:在第四个字段为非空的每一行中,递增c。最后,打印c
sed
说明:删除与regexp匹配的每一行。然后用wc
计算sed
输出的行数。regexp基本上表示行中最多可以有两个空格组,不包括初始空格组和最终空格组,这意味着行中最多可以有3个字段。cut
也可以使用:
cut -f 5 -d' ' file | wc -w
选择5。列(由于前导空白,第一列为空)。分隔符为空。
cut
也可用于:
cut -f 5 -d' ' file | wc -w
选择5。列(由于前导空白,第一列为空)。分隔符为空。这可能适用于您:
sed 's/ *[^ ]*/&/4;t;d;' file | sed -n '$='
这可能适合您:
sed 's/ *[^ ]*/&/4;t;d;' file | sed -n '$='