여러 문자열이 포함된 변수에서 여러 패턴을 파악하는 방법은 무엇입니까?
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
패턴이 정규식이 아닌 고정 문자열임을 나타냅니다. 이렇게 하면 패턴 일치 속도가 빨라집니다. 이러한 단어가 정규 표현식인 경우 이 옵션을 제거하세요.