Como descobrir quantos valores em uma coluna não estão presentes

Como descobrir quantos valores em uma coluna não estão presentes

Tenho tentado descobrir como descobrir quantos valores em uma coluna que não estão presentes, ou seja, tem apenas um "."

Por exemplo

carro.txt

Car           Colour      mpg          Year
vw_golf         blue       56          2006
vw_polo          red       66          2010
honda_civic    white       .           2007
ford_ka          red       .           2014

Então, os que me interessam são o honda civic e o ford ka, pois eles não têm um número presente para a coluna mpg e quero descobrir quantos valores na coluna mpg que não tem valor (em este caso é 2).

O problema que estou tendo é que o período parece dar erros quando uso o comando awk.

Responder1

Curtogrepabordagem:

grep -Ec '^\S+\s+\S+\s+\.\s+' file
2

  • -E- permitir expressões regulares estendidas
  • -c- imprima uma contagem de linhas correspondentes
  • \S+- corresponde a caracteres que não sejam espaços em branco, é sinônimo de[^[:space:]]
  • \s+- corresponde ao(s) caractere(s) de espaço em branco, é sinônimo de[[:space:]]

Responder2

Outro grepmétodo, se o seu arquivo estiver estritamente formatado para que o mpg comece na coluna 28:

$ grep '...........................\.' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ grep -c '...........................\.' input
2

São 28 pontos (para "qualquer" caractere) seguidos por um ponto de escape ("um ponto").

Ou com awk,como mencionadonos comentários:

$ awk '$3 == "."' input
honda_civic    white       .           2007
ford_ka          red       .           2014

$ awk '$3 == "."' input | wc -l
2

informação relacionada