나는 특정 단어를 스캔하려고하는 큰 로그 파일을 가지고있다. 일반적으로 큰 로그 파일에서 grep해야 할 단어가 거의없고 그 단어가 들어있는 줄을 인쇄합니다.로그 파일에 특정 단어를 포함하는 행에 대해 grep하는 방법은 무엇입니까?
나는 파일에 간단한 grep을하는 방법을 안다. 내 파일 이름이 abc.log
이고 "hello"라는 단어가 포함 된 줄을 찾으려면 항상 이렇게하고 나에게 줄을 인쇄하십시오.
grep -i "hello" abc.log
그러나 단어 조합에 대해 grep을 수행하는 방법을 모르겠습니다. 의미있는 단어 목록을 가지면 모든 단어에 대해 abc.log 파일을 스캔하고 개별적으로 해당 단어가 포함 된 행을 인쇄합니다.
#!/bin/bash
data="hello,world,tester"
# find all the lines which contains word hello or world or tester
그래서 내 위의 쉘 스크립트에서 내 데이터 변수를 분할하고 그래서 안녕하세요 단어가 포함 된 모든 행을 abc.log 안녕 단어를 보면, 나뿐만 아니라 세계와 테스터와 마찬가지로 그것을 밖으로 인쇄됩니다.
로그를 그릴 실제 논리를 건드리지 않고 데이터 변수에 내 단어 목록을 추가하기 만하면됩니다.
감사 o11c. 필자의 경우 패턴이 많이 커지므로 파일 접근 방식이 좋지만 한 가지 더 추가하고 싶습니다. 특정 단어가 포함되어 있으면 줄을 인쇄하지 마십시오. 현재 접근 방식으로 어떻게이 작업을 수행합니까? – john
@ user2809564'grep -v wordtoexclude' (또는'-e' 또는'-f' 등)를 통해 첫번째 grep을 파이프하십시오. – o11c
고마워요. 제외 할 패턴이 여러 개있을 수도 있으므로 제외하고 패턴을 포함하는 파일 하나를 만들어이 파일을 사용하여 grep을 수행하는 방법이 있습니까? – john