Ok, un poco tarde agregando mi contribución, pero creo que vale la pena.
El requisito para cumplir, según el OP, es la primera columna que tiene el valor decimal de .000
o .500
solo. No hay estipulación en cuanto al valor inicial, ya sea por rango o longitud. Para robustez no debe suponerse que está limitado por nada, excepto que no hay caracteres no estén en blanco antes de la primera columna (o que ya no es la primera columna) y que el contenido de la primera columna se tiene un punto decimal, .
, en alguna parte
El OP desea usar grep
, lo que imprimirá toda la línea cuando se encuentre una coincidencia, por lo que lo único que debe hacer es crear el patrón que coincida con todo y solo con lo que se requiere.
La simplicidad en sí misma, y no hay razón para usar sed
o awk
como `grep puede manejar la fuente como un archivo o una tubería.
Para grep
usar un archivogrep '^[^.]*\.[05]0\{2\}\s' the_file.txt
Para grep
desde una tubería, usemy_command | grep '^[^.]*\.[05]0\{2\}\s'
El patrón es: ^
comienza al principio de la línea; [^.]
, coincide con cualquier carácter no decimal; *
, tantas veces como sea posible (sin incluir ninguna); \.
, coincide con un punto decimal; [05]
, coincide con un cinco o un cero; 0\{2\}
, haga coincidir 2 ceros más (las barras invertidas antes de la llave de apertura y cierre evitan que la cubierta intente expandir la llave); \s
, haga coincidir un carácter de espacio en blanco (es decir, el final de la columna; para usarlo en un caso de uso diferente, reemplácelo con el separador de columna, generalmente un comandante, un punto y coma o una pestaña \t
).
Tenga en cuenta que esto coincidirá exactamente con lo que solicitó el OP. Será no coincida .5000
o .0000
aunque numéricamente equivalentes, debido a que las miradas del patrón para un cinco o un cero, seguido por exactamente 2 más ceros seguidos por espacios en blanco. Si eso es significativo, todas las demás respuestas, hasta ahora, fallan en el sentido de que coincidirán con cualquier número de ceros, mayor que 1, después del dígito de prueba. Y a excepción de la respuesta de FloHimself, coincidirán con cualquier cosa en la segunda columna que comience .000
o .500
, incluyendo .0003
y .500T
, y la de FloHimself coincidirá con cualquier cosa que sea matemáticamente equivalente a .0
y.5
, no importa cuántos ceros haya. El último, aunque no coincide con lo que el OP declaró, es probable que coincida con lo que el OP necesita de todos modos.
Finalmente, si se desea el poder y la velocidad de awk
, a pesar de que el OP lo solicitó grep
, entonces el comando sería:
Con un archivo awk '$1 ~ /[^.]\.[05]0{2}$/' the_file.txt
Con una pipa my_command | awk '$1 ~ /[^.]\.[05]0{2}$/'