변수에 여러 문자열이 있는 경우 여러 패턴을 grep

변수에 여러 문자열이 있는 경우 여러 패턴을 grep

여러 문자열이 포함된 변수에서 여러 패턴을 파악하는 방법은 무엇입니까?

words=(hello world foo bar)
grep -e ${words}  text.txt

words또한 모든 사용자 입력을 담는 변수 로 사용하겠습니다 . 변수의 형식을 변경하여 내부의 모든 문자열을 파악하는 데 사용할 수 있는 방법이 있습니까?

text.txt문제는 위의 코드를 시도하면 grep 명령을 만족하는지 여부에 관계없이 모든 결과를 얻는다는 것입니다.

답변1

words=(hello world foo bar)
grep -F -f <(printf "%s\n" "${words[@]}") text.txt

이는 다음을 사용합니다.프로세스 교체각 단어에 대해 한 줄로 구성된 "파일"을 제공하십시오. 이 -f옵션은 grep파일에서 일치시킬 패턴 목록을 읽도록 지시합니다.

-F옵션은 grep패턴이 정규식이 아닌 고정 문자열임을 나타냅니다. 이렇게 하면 패턴 일치 속도가 빨라집니다. 이러한 단어가 정규 표현식인 경우 이 옵션을 제거하세요.

관련 정보