Cómo encontrar cuántos valores en una columna no están presentes

Cómo encontrar cuántos valores en una columna no están presentes

He estado tratando de descubrir cómo encontrar cuántos valores en una columna no están presentes, es decir, solo tiene un "."

Por ejemplo

coche.txt

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

Entonces, los que me interesan son el honda civic y el ford ka, ya que no tienen un número presente para la columna de mpg y quiero saber cuántos valores hay en la columna de mpg que no tiene un valor (en este caso es 2).

El problema que tengo es que el punto parece dar errores cuando uso el comando awk.

Respuesta1

Cortogrepacercarse:

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

  • -E- permitir expresiones regulares extendidas
  • -c- imprimir un recuento de líneas coincidentes
  • \S+- coincide con caracteres que no son espacios en blanco, es sinónimo de[^[:space:]]
  • \s+- coincide con los espacios en blanco, es sinónimo de[[:space:]]

Respuesta2

Otro grepmétodo, si su archivo está formateado estrictamente para que el mpg comience en la columna 28:

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

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

Son 28 puntos (para "cualquier" carácter) seguidos de un punto de escape ("un punto").

O con awk,como mencionadoen los comentarios:

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

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

información relacionada