我有一個文件如下
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
我只想 grep 第一列包含小數 0.000 和 0.500 的行,因此輸出如下所示
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