[linux] grep을 사용하여 점이있는 문자열 검색

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'