awk + ​​如何计算具有特定结构的行数

awk + ​​如何计算具有特定结构的行数

如何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 - 您应该更新有关打印要求的问题。

相关内容