![awk + 如何计算具有特定结构的行数](https://linux22.com/image/116234/awk%20%2B%20%E2%80%8B%E2%80%8B%E5%A6%82%E4%BD%95%E8%AE%A1%E7%AE%97%E5%85%B7%E6%9C%89%E7%89%B9%E5%AE%9A%E7%BB%93%E6%9E%84%E7%9A%84%E8%A1%8C%E6%95%B0.png)
如何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”。
答案1
既然你问了一个awk
代码,这里是一个:
awk '/"[^"]*"[[:space:]]*:[[:space:]]*"[^"]*"/ { n++ } END { print n }'
但grep
更适合这个:
grep -c '"[^"]*"[[:space:]]*:[[:space:]]*"[^"]*"'
答案2
要打印匹配的行,请使用print
匹配块内的命令。下面的示例执行打印和计数:
awk '/\".*\"[[:blank:]]*:[[:blank:]]*\".*\"/{print;n++} END{print n}'
ps - 您应该更新有关打印要求的问题。