0.49
명령을 사용하여 문자열 (점 포함) 을 검색하려고합니다.
grep -r "0.49" *
그러나 일어나는 것은 나 또한 같은 문자열을 포함하는 원치 않는 결과를 얻고 있다는 것입니다가 0449
, 0949
등 ,. 리눅스는 dot (.)을 어떤 문자로 간주하고 모든 결과를 이끌어냅니다. 그러나 “0.49”에 대해서만 결과를 얻고 싶습니다.
답변
grep
정규식을 사용합니다. .
정규식에서 “모든 문자”를 의미합니다. 당신은 리터럴 문자열을 원하는 사용하는 경우 grep -F
, fgrep
또는 탈출 .
에 \.
.
문자열을 큰 따옴표로 묶는 것을 잊지 마십시오. 그렇지 않으면 사용해야합니다\\.
따라서 귀하의 명령은 다음과 같아야합니다.
grep -r "0\.49" *
또는
grep -r 0\\.49 *
또는
grep -Fr 0.49 *
답변
grep -F -r '0.49' *
0.49를 정규식 대신 “고정”문자열로 취급합니다. 이것은 .
특별한 의미 를 잃게 만듭니다 .
답변
.
as 를 탈출해야합니다 "0\.49"
.
A .
는 모든 문자와 일치하는 정규식 메타 문자입니다 (줄 바꿈 제외). 리터럴 기간을 일치 시키려면 이스케이프해야합니다.
답변
그냥 탈출 .
grep -r "0\.49"
답변
“[.]”를 사용할 수도 있습니다.
grep -r "0[.]49"
답변
거기에 점을 탈출 제안 여기 이렇게 많은 답변이 \.
있지만, 나는 또 다시이 문제에 실행 된 것은 : \.
나에게 동일한 결과를 제공.
그러나이 두 표현은 저에게 효과적입니다.
$ grep -r 0\\.49 *
과:
$ grep -r 0[.]49 *
우분투와 Archlinux에서 “일반”bash 쉘을 사용하고 있습니다.
의견에 따라 편집 하거나
$ grep -r '0\.49' *
1, 참고 단일 -quotes 여기의 차이 일입니다.
답변
탈출 점. 샘플 명령입니다.
grep '0\.00'
