Eu tenho um arquivo como o seguinte
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
Eu gostaria de fazer grep apenas nas linhas que possuem na primeira coluna os decimais .000 e .500 apenas para que a saída ficasse assim
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
Responder1
Você não usa grep. Usar awk
.
"your data" | awk '$1 ~ /\.[05]00/'
Responder2
awk '$1 ~ /\.[50]00/ { print $0 }' myFile.txt
A primeira coluna $1
será comparada com /\.500|\.000/
os pontos que escapam para serem pontos literais, não regex qualquer caractere ~
, é uma correspondência parcial e imprime a linha inteira$0
Responder3
Eu gostaria degrepapenas as linhas que possuem na primeira coluna os decimais .000 e .500
Meu primeiro pensamento
grep '^ *[0-9][0-9][0-9]\.[50]00' filename
Teste rápido 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
Existem maneiras mais concisas de expressar isso.
$ 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
Se a primeira coluna puder ter outra parte inteira que não seja de 3 dígitos
grep -E '^ *[0-9]+\.[05]00' testdata
Em algumas circunstâncias, pode ser necessário usar [:digit:]
no lugar de [0-9]
.
E assim por diante.
man grep
é seu amigo.
Responder4
grep -e '2[^ ]*.000' -e '2[^ ]*.500' file.txt