ファイルがあり(下記参照)、1と0の数を数えたいです。
1
1
1
0
0
1
1
0
0
0
...
awkを使ってみましたが、うまくいきません。たとえば、1の数を数える操作は次のとおりです。
awk -F "1\n" '{print NF-1}'
どうすればいいですか?
ファイルには1と0のみが含まれており、各行は数字だけであるとします。しかし、ファイル内の特定の行の発生回数を数える場合に一般化する方法を知りたいです。
答え1
計算で1と0の数を数えますfilename
。
$ sort <filename | uniq -c
5 0
5 1
答え2
そしてawk
:
awk '/0/{zero++} /1/{one++} END{printf "0: %d\n1: %d\n", zero, one}' filename
を使用するには、grep
次の2つのコマンドが必要です。
grep -c 1 filename
grep -c 0 filename
完全な行を含む文字列の場合:
grep -cFx 'target string' filename
おそらく、文字列に正規表現で特別な意味を持つ文字を含めることができるので、を使用して行全体が一致する必要があることを指定する必要があり-F
ます-x
。
awkを使用してください:
awk '$0 == "target string" {count++} END {print count}'
答え3
0以外のすべての項目を削除し、文字数を印刷します。
tr -cd 0 < file | wc -m
出力:
5
答え4
エド! !人編集者:
$ ed -s file <<EOT
g/0/d
n
u
g/1/d
n
EOT
13 1
17 0