我有一个矩阵:
>ACTTT ASB 0.098
0 0 1 0
0.75 0 0.25 0
0 0 0 1
0 1 0 0
1 0 0 0
1 0 0 0
0 1 0 0
0 1 0 0
我想算一下' 0' 0' 0的出现次数。'在每行文件中(忽略标题),这样每行我都会得到3,2,3,3,3,3,3的计数。 我试过echo $ line | grep -o 0 | wc -l,但它算的是' 0。'同样。
答案 0 :(得分:2)
$ awk 'NR>1{print gsub(/(^|[[:space:]])0([[:space:]]|$)/,"&")}' file
3
2
3
3
3
3
3
3
答案 1 :(得分:0)
像下面这样的awk脚本可以工作:
<强> script.awk 强>
BEGIN { ORS = "," }
NR > 1 { s =0
for( f=1; f<= NF; f++) s+= (($f == 0) ? 1 : 0 )
print s
}
像这样使用:awk -f script.awk yourfile
。
第一行将,
配置为Output-Record-Separator,第二行应用于除标题之外的每一行。它遍历字段,如果字段$f
等于0:?
运算符用于递增s
中的零行和。
答案 2 :(得分:0)
一件事拳头。看起来你正在shell循环中逐行处理文件。这很慢。你绝对应该使用awk并在运行中处理该文件。其他答案显示了如何做到这一点。
以下只是理论提示如何使用 while True:
c = msvcrt.getch()
if ord(c) == 8:
buffer = buffer[:-1]
else:
buffer += c
# write the buffer to file
和<div id="DivDati" class="ui-accordion-content ui-helper-reset ui-widget- content ui-corner-bottom">
<p><a style="margin:20px;" class="button" href="javascript:EsportaConfrontoCanali(false);">Esporta</a></p>
<!-- Tabella -->
<table style="width:800px;margin:auto;" class="confrontoTabelle">
<tbody><tr>
<th>Selezionare i valori e premere "Filtra"</th>
</tr>
</tbody></table>
<!-- Fine tabella -->
</div>
来完成。我只关注正确的正则表达式。
你可以grep grep
前缀为空格或行的开头,然后是空格或行尾:
wc
head命令是跳过标题行。