한 번에 grep

한 번에 grep

내 스크립트는 매개변수를 받고 다른 파일을 grep해야 합니다. 스크립트는 각 매개변수를 반복합니다.

OR을 사용하여 단일 검색 문자열과 grep에서 매개변수를 수집하는 방법이 있습니까? 나는 모든 것을 한 번에 검색하면 내 스크립트가 더 빨라지기를 바라면서 속도를 위해 이 작업을 수행하고 싶습니다. 어떤 아이디어라도 감사드립니다.

답변1

grep -e foo -e bar -e baz files

또는:

grep 'foo
bar
baz' files

foo, barbaz기본 정규 표현식이 아닌 문자열인 경우 -F위의 두 명령에 이 옵션을 추가하세요 grep .

확장 정규식의 경우:

grep -E 'foo|bar|baz' files

문자열 목록이 위치 매개변수( $1, $2...)에 있는 경우:

NL='
'
IFS=$NL  # or IFS=$'\n' with ksh93/zsh/bash/mksh/FreeBSD sh...
grep -Fe "$*" files

( $*위치 매개변수와 첫 번째 문자를 연결한 것입니다 $IFS.)

답변2

egrep(또는 grep -E) 다음을 수행할 수 있습니다. 또는:

egrep "string|string|string" <file>

답변3

또 다른 옵션은 다음을 사용하는 것입니다.확인하다확장 정규 표현식은 기본적으로 지원됩니다.

ack "one|two"

대소문자를 구분하지 않으려면 ack -i비표준 파일 형식의 경우 ack --all.

관련 정보