次のようなファイルがあります
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
最初の列に小数点.000と.500のみがある行のみをgrepしたいので、出力は次のようになります。
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
答え1
grep は使用しません。 を使用しますawk
。
"your data" | awk '$1 ~ /\.[05]00/'
答え2
awk '$1 ~ /\.[50]00/ { print $0 }' myFile.txt
最初の列は、ドットがエスケープされてリテラルドットになり、正規表現ではない文字が部分的に一致するかどうかが$1
照合され、行全体が印刷されます。/\.500|\.000/
~
$0
答え3
私はしたいと思いますグレップ最初の列に小数点 .000 と .500 がある行のみ
私の最初の考え
grep '^ *[0-9][0-9][0-9]\.[50]00' filename
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
これをより簡潔に表現する方法があります。
$ 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
最初の列が3桁の整数部分以外になる場合
grep -E '^ *[0-9]+\.[05]00' testdata
状況によっては、[:digit:]
の代わりにを使用する必要がある場合があります[0-9]
。
等々。
man grep
あなたの友だちです。
答え4
grep -e '2[^ ]*.000' -e '2[^ ]*.500' file.txt