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

일치하는 줄을 인쇄하려면 printmatch 블록 내부에 명령을 사용하세요. 다음 예에서는 인쇄 및 계산을 수행합니다.

awk '/\".*\"[[:blank:]]*:[[:blank:]]*\".*\"/{print;n++} END{print n}'

ps - 인쇄 요구 사항에 대한 질문을 업데이트해야 합니다.

관련 정보