"(me OR you) OR (john AND ! doe)"와 같은 쿼리를 사용하여 bash에서 스크립트 출력을 필터링하는 방법은 무엇입니까?

"(me OR you) OR (john AND ! doe)"와 같은 쿼리를 사용하여 bash에서 스크립트 출력을 필터링하는 방법은 무엇입니까?

명령줄 출력을 bash 스크립트나 부울 검색을 기반으로 필터링하는 일부 명령줄 프로그램으로 파이프할 수 있기를 원합니다. 정규 표현식은 필요하지 않습니다(그러나 지원된다면 괜찮을 것입니다).

예를 들어 다음과 같은 파일이 있다고 가정해 보겠습니다.

파일 1.txt

hello there
me and you are going to the store
this is a file created by john doe and his friend jane
john is here

그런 다음 내 가상 스크립트를 다음과 같이 실행할 수 있습니다.

$ cat file1.txt | filter "(me OR you) OR (john AND ! doe)"
me and you are going to the store
john is here

아마도 여러 개의 호출과 같은 것을 함께 엮을 수 있지만 grep이를 grep -v수행할 수 있는 더 깔끔한 방법이 없는지 궁금하십니까?

답변1

이와 같이 더 복잡한 필터의 경우 awk다음 작업을 수행하는 것이 가능할 수 있습니다.

awk '( /me|you/ ) || (/john/ && ! /doe/ )' /path/to/file

관련 정보