
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
Cortogrep
acercarse:
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 grep
mé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