次のファイルがあります
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
最初の列に少数の0.000と0.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
私の考えではgrep最初の列に小数点が0.000と0.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