说我有一个文件,file.txt:
F1 ID1 *
F1 ID2 *
F1 ID1 -
F1 ID3 *
F2 ID2 *
F1 ID3 *
F2 ID1 *
F1 ID1 -
F2 ID1 -
F2 ID3 *
目标是将文件限制为仅包含第一列中F1的行,并查找带有' - '的行数。在第三列中......除以第一列中F1的总行数。
F1 ID1 *
F1 ID2 *
F1 ID1 -
F1 ID3 *
F1 ID3 *
F1 ID1 -
在这种情况下,2/6 = 0.333
到目前为止我做了什么:
我开始寻找第一列为F1的所有行并将其存储在变量
中result=$(grep F1 file.txt)
但它并没有做我想做的事。为什么只有grep的最后一行存储在$ result中?
echo $result
F1 ID1 -
答案 0 :(得分:4)
您可以这样做:
$ grep ^F1 test.txt | awk '{sum += 1; if($3=="-") dash += 1} END {print dash/sum}'
0.333333
说明:
^F1
表示给我以F1 awk
sum
;如果第3列是dash
-
END
)后,打印数学结果答案 1 :(得分:3)
你可以这样做:
$ echo "scale=3; $(grep -c '^F1 [^ ]\+ -$' file.txt) / $(grep -c '^F1 ' file.txt)" | bc -l
.333
答案 2 :(得分:2)
cat test.txt | awk '/^F1/{a++;if($3=="-")b++};END{print b/a}' # 0.33333
grep ^F1 test.txt | awk '$3=="-"{d+=1};END{print d/NR}' # 0.33333