
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
Curtogrep
abordagem:
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 grep
mé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