다음과 같은 파일이 있습니다
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
나는하고 싶다grep첫 번째 열에 소수점 .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