JSONデータがあります。
"Item1": {
"foo": null,
"version": "bar",
"result": null,
},
"Item2": {
"foo": null,
"version": "bar",
"result": null,
},
"Item3": {
"foo": null,
"version": "bar",
"result": null,
},
文字列をフィルタリングできawk
ます。
$ awk '/version/' /tmp/json
"version": "bar",
"version": "bar",
"version": "bar",
私は行数を数え、パイプなしで次の結果を得ようとしています。純粋な awk。
$ awk '/version/' /tmp/json | wc -l
3
オンラインの例では使用方法を示していますが、END
私がNR
望む結果は出ません。
$ awk '/version/{print NR}' /tmp/json
3
8
13
または
$ awk 'END/version/{print NR}' /tmp/json
awk: line 1: syntax error at or near /version/
ベストアンサー1
でこれを行う必要がある場合は、awk
一致する行ごとに変数を増やし、すべての行が処理されたらその変数を印刷します。
$ awk '/version/{c++}END{print c}' file
3
0
または、一致するものがない場合に印刷するには(上記の内容は空白行のみを印刷します)、次を使用します。
awk '/version/{c++}END{print c+0}' file
いよいよ印刷可能ただ一致する項目が 1 つ以上ある場合 (一致項目がない場合は空行以外の出力がない場合)、次を使用します。
awk '/version/{c++}END{ if(c) print c}'