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

1

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

Por exemplo

car.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 eu estou interessado são o honda civic e o ford ka, já que eles não têm um número presente para a coluna mpg e eu quero descobrir quantos valores na coluna mpg que não tem um valor (neste caso é 2).

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

    
por Maurice 19.11.2017 / 22:59

2 respostas

0

Abordagem curta grep :

grep -Ec '^\S+\s+\S+\s+\.\s+' file
2
  • -E - permite expressões regulares estendidas
  • -c - imprime uma contagem de linhas correspondentes
  • \S+ - corresponde a caractere (s) sem espaço em branco, é sinônimo de [^[:space:]]
  • \s+ - corresponde a caractere (s) de espaço em branco, é sinônimo de [[:space:]]
por 19.11.2017 / 23:29
0

Outro método grep , se o seu arquivo for 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 períodos (para "qualquer" caractere) seguidos por um período de escape ("um período").

Ou com awk , como mencionado nos comentários:

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

$ awk '$3 == "."' input | wc -l
2
    
por 13.04.2018 / 18:32