Ich habe eine Datei wie die folgende
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
Ich möchte nur die Zeilen greppen, die in der ersten Spalte nur die Dezimalzahlen .000 und .500 haben, sodass die Ausgabe wie folgt aussehen würde
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
Antwort1
Sie verwenden nicht grep. Verwenden Sie awk
.
"your data" | awk '$1 ~ /\.[05]00/'
Antwort2
awk '$1 ~ /\.[50]00/ { print $0 }' myFile.txt
Die erste Spalte $1
wird mit /\.500|\.000/
den Punkten verglichen, die als wörtliche Punkte maskiert werden, nicht mit regulären Ausdrücken, die nur ~
teilweise übereinstimmen, und die ganze Zeile wird gedruckt$0
Antwort3
Ich möchtegrepnur die Zeilen, die in der ersten Spalte die Dezimalzahlen .000 und .500 haben
Mein erster Gedanke
grep '^ *[0-9][0-9][0-9]\.[50]00' filename
Schnelltest mit 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
Es gibt prägnantere Möglichkeiten, dies auszudrücken.
$ 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
Wenn die erste Spalte einen anderen als einen dreistelligen ganzzahligen Teil enthalten kann
grep -E '^ *[0-9]+\.[05]00' testdata
Unter bestimmten Umständen müssen Sie [:digit:]
anstelle von verwenden [0-9]
.
Und so weiter.
man grep
ist dein Freund.
Antwort4
grep -e '2[^ ]*.000' -e '2[^ ]*.500' file.txt