tengo un archivo como el siguiente
200.000 1.353 0.086
200.250 1.417 0.000
200.500 1.359 0.091
200.750 1.423 0.000
201.000 1.365 0.093
201.250 1.427 0.000
201.500 1.373 0.093
201.750 1.432 0.000
202.000 1.383 0.091
202.250 1.435 0.000
202.500 1.392 0.087
202.750 1.436 0.000
203.000 1.402 0.081
203.250 1.437 0.001
203.500 1.412 0.073
204.000 1.423 0.065
204.500 1.432 0.055
205.000 1.441 0.045
Me gustaría grep solo las filas que tienen en la primera columna el decimal .000 y .500 solamente para que el resultado sea así
200.000 1.353 0.086
200.500 1.359 0.091
201.000 1.365 0.093
201.500 1.373 0.093
202.000 1.383 0.091
202.500 1.392 0.087
203.000 1.402 0.081
203.500 1.412 0.073
204.000 1.423 0.065
204.500 1.432 0.055
205.000 1.441 0.045
Respuesta1
No usas grep. Usar awk
.
"your data" | awk '$1 ~ /\.[05]00/'
Respuesta2
awk '$1 ~ /\.[50]00/ { print $0 }' myFile.txt
La primera columna $1
se comparará con /\.500|\.000/
los puntos, se escaparán para que sean puntos literales, no registren ningún carácter, la ~
coincidencia sea parcial y se imprima la línea completa.$0
Respuesta3
Me gustaríagrepsolo las filas que tienen en la primera columna el decimal .000 y .500
Mi primer pensamiento
grep '^ *[0-9][0-9][0-9]\.[50]00' filename
Prueba rápida usando WSL
$ head testdata
200.000 1.353 0.086
200.250 1.417 0.000
200.500 1.359 0.091
200.750 1.423 0.000
201.000 1.365 0.093
201.250 1.427 0.000
201.500 1.373 0.093
201.750 1.432 0.000
202.000 1.383 0.091
202.250 1.435 0.000
$ grep '^ *[0-9][0-9][0-9]\.[50]00' testdata
200.000 1.353 0.086
200.500 1.359 0.091
201.000 1.365 0.093
201.500 1.373 0.093
202.000 1.383 0.091
202.500 1.392 0.087
203.000 1.402 0.081
203.500 1.412 0.073
204.000 1.423 0.065
204.500 1.432 0.055
205.000 1.441 0.045
Hay formas más concisas de expresar esto.
$ grep -E '^ *[0-9]{3}\.[50]00' testdata
200.000 1.353 0.086
200.500 1.359 0.091
201.000 1.365 0.093
201.500 1.373 0.093
202.000 1.383 0.091
202.500 1.392 0.087
203.000 1.402 0.081
203.500 1.412 0.073
204.000 1.423 0.065
204.500 1.432 0.055
205.000 1.441 0.045
Si la primera columna puede tener una parte entera que no sea de 3 dígitos
grep -E '^ *[0-9]+\.[05]00' testdata
En algunas circunstancias, es posible que necesites utilizarlo [:digit:]
en lugar de [0-9]
.
Etcétera.
man grep
es tu amigo.
Respuesta4
grep -e '2[^ ]*.000' -e '2[^ ]*.500' file.txt