这是我的文件的样子:
SRR008602 97 99 99 99 98 99 98 11
SRR009633 99 99 99 99 99 100 100 10
SRR022120 0 0 0 0 0 0 0 0
SRR026121 0 0 0 0 0 0 0 0
SRR008724 80 79 99 99 99 99 99 18
我想计算第 2 到第 9 列的值都为“0”的行数。我更喜欢一个awk
解决方案。这是我想出的(并且有效),但我相信一定有更好的方法:
awk '$2 == 0 && $3 == 0 && $4 == 0 && $5 == 0 && $6 == 0 && $7 == 0 && $8 == 0 && $9 == 0 {n++}; END {print n}' input.txt
在 awk 中接吻:
珀尔:
或(如 Glenn Jackman 所建议)使用List::Util模块
在 awk 中输入的内容略少:将这些字段的连接与连接的零进行比较:
只要您的输入数据已经过清理,就更简洁一些:
也就是说,首先删除第一个以空格分隔的列
cut
,然后删除grep
仅包含零和空格的行,然后计算这些行。或者,
grep
用于计数:另一种
awk
方法:或者如果您有超过 9 列并且您只想检查 2~9:
与
grep
: