Как использовать awk
для подсчета всех строк, соответствующих следующему структура:
"any-string" : "any-string"
Например,
"ssl.server.keystore.type" :
"mapred-logsearch-conf" : {
"hive.server2.thrift.sasl.qop" : "auth",
"hive.merge.orcfile.stripe.level" : "true",
"hive.orc.splits.include.file.footer" : "false",
"hive.exec.compress.output" : "false",
"hive.user.install.directory" : "/user/",
"hive.prewarm.enabled" : "false",
"hive.compactor.delta.num.threshold" : "10",
"hive.orc.compute.splits.num.threads" : "10",
"hive.vectorized.groupby.checkinterval" : "4096",
"properties_attributes" : { },
даст результат «9».
Поскольку вы спрашиваете код awk
, вот один:
awk '/"[^"]*"[[:space:]]*:[[:space:]]*"[^"]*"/ { n++ } END { print n }'
Но для этого больше подходит grep
:
grep -c '"[^"]*"[[:space:]]*:[[:space:]]*"[^"]*"'
Для печати совпадающих строк используйте команду print
внутри совпадающего блока. Пример ниже выполняет печать и подсчет-:
awk '/\".*\"[[:blank:]]*:[[:blank:]]*\".*\"/{print;n++} END{print n}'
ps -вам следует обновить свой вопрос относительно требований к печати.