Awk 计算每个原始数据中大于x的数字的出现次数
我有一个多行26列的文件。我想统计每一行(不包括前两列)中出现的大于0的值的数量(我猜也是有效的,不同于0)。该文件如下所示:Awk 计算每个原始数据中大于x的数字的出现次数,awk,sed,Awk,Sed,我有一个多行26列的文件。我想统计每一行(不包括前两列)中出现的大于0的值的数量(我猜也是有效的,不同于0)。该文件如下所示: X Y Sample1 Sample2 Sample3 .... Sample24 a a1 0 7 0 0 b a2 2 8 0 0 c a3
X Y Sample1 Sample2 Sample3 .... Sample24
a a1 0 7 0 0
b a2 2 8 0 0
c a3 0 3 15 3
d d3 0 0 0 0
X Y Result
a a1 1
b b1 2
c c1 3
d d1 0
我希望有这样一个输出文件:
X Y Sample1 Sample2 Sample3 .... Sample24
a a1 0 7 0 0
b a2 2 8 0 0
c a3 0 3 15 3
d d3 0 0 0 0
X Y Result
a a1 1
b b1 2
c c1 3
d d1 0
awk或sed最好
我看到了一个类似的问题,但在这种情况下,列被求和,所需的输出不同。awk'NR==1{printf“X\tY\tResult%s”,ORS}\
awk 'NR==1{printf "X\tY\tResult%s",ORS} # Printing the header
NR>1{
count=0; # Initializing count for each row to zero
for(i=3;i<=NF;i++){ #iterating from field 3 to end, NF is #fields
if($i>0){ #$i expands to $3,$4 and so which are the fields
count++; # Incrementing if the condition is true.
}
};
printf "%s\t%s\t%s%s",$1,$2,count,ORS # For each row print o/p
}' file
NR>1{
计数=0;#将每行的计数初始化为零
对于(i=3;i0){#$i扩展为$3,$4,因此哪些字段是
如果条件为真,则计数+++#递增。
}
};
打印F“%s\t%s\t%s%s”、$1、$2、计数、ORS(每行打印o/p)
}"档案"
应该这样做另一个
awk
$ awk '{if(NR==1) c="Result";
else for(i=3;i<=NF;i++) c+=($i>0);
print $1,$2,c; c=0}' file | column -t
X Y Result
a a1 1
b a2 2
c a3 3
d d3 0
$awk'{if(NR==1)c=“Result”;
(i=3;i0)的其他值;
打印$1,$2,c;c=0}'文件|列-t
X-Y结果
a11
b a2 2
c a3 3
d d3 0