리터럴 문자열에 대한 Ack 검색


15

html 태그의 일부를 검색하려고 할 때 물건을 피해야합니다.

물건을 피 하지 않고 입력 한 내용을 정확하게 검색하려면 어떻게 해야합니까?

예 :

ack-grep 'console.log(foo'

나는 얻다:

Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/

다른 쉘을 사용 하시겠습니까? 따옴표로 묶으시겠습니까? 검색 문자열을 파일에 넣으십시오. ack-grep이 파일에서 문자열을 가져올 수 있다고 생각합니다. 아마도 stdin을 통해 검색 할 수도 있습니다.
Zoredache

@Zoredache 더 나은 예제를 추가했습니다 .. 탈출하고 싶지 않다 (.. 그리고 더 나은 쉘은 무엇을 의미합니까?
tester

나는 당신이 불평하는 모든 chracter가 쉘 (bash / zsh / whatever)에 의해 처리된다는 것을 의미합니다. 문제는 도구와 관련이 없습니다. 문제는 쉘이 입력 한 내용을 보내지 않는다는 것입니다.
Zoredache

아 나는 그것을 발견했다고 생각한다. -Q는 그것을 문자 그대로 사용한다.
tester

답변:


18

정규식을 벗어나야합니다.

ack 'console\.log\(foo'

( 단일 문자와 일치 .하므로 "consoleflog"와 일치하지 않도록 이스케이프 처리해야 .합니다.)

그렇게하지 않으려면 모든 메타 문자를 자동으로 인용하십시오.

ack -Q 'console.log(foo'

2
\ Q가 내 서버에서 작동하지 않습니다. ack '\Qconsole.log(foo' ack: Invalid regex '\Qconsole.log(foo': Unmatched ( in regex; marked by <-- HERE in m/\Qconsole.log( <-- HERE foo/
Sébastien

나는 \Q예제 에 대해 착각 하여 답변에서 제거했습니다. 감사합니다, @ Sébastien.
Andy Lester
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.