grep을 사용한 논리적 AND 및 OR

grep을 사용한 논리적 AND 및 OR

다음 논리 연산과 일치하는 행을 추출하고 싶습니다.

"AB+CD" AND ("nonAB+nonCD" OR "nonAB+CD"). 

이는 다음과 같은 줄을 원한다는 것을 의미합니다.

AB+CD,nonAB+nonCD
AB+CD,nonAB+CD
AB+CD,nonAB+nonCD,nonAB+CD

즉, "AB+CD"가 포함된 줄을 찾고 있습니다.하나또는둘 다("nonAB+nonCD" 또는 "nonAB+CD").
+는 문자열의 일부입니다. 산술 연산이 아닌 문자열(문자)로 처리하고 싶습니다.

내가 한 일은 파이프를 사용하여 AND를 실행하는 것입니다. 그리고 \|를 사용하세요. 수술실을 위해. 그래서 내 명령은 다음과 같습니다

grep ',AB+CD' test.txt | grep ',nonAB+nonCD\|,nonAB+CD'

첫 번째는 |배관용입니다. 두 번째는 grep에 대한 논리적 OR입니다.참조grep을 사용한 논리적 OR에 대한 예는 다음과 같습니다.

grep 'pattern1\|pattern2' filename

나에게 터미널 색상으로 나타나는 결과는 명령의 두 번째 부분을 찾습니다. 첫 번째 부분(파이프가 |색상 결과에서 강조 표시되기 전) 내 질문:

1) 내 명령이 맞나요?

2) 전체 명령 결과에 색상을 지정하는 방법은 무엇입니까?

답변1

-P옵션(PCRE) 사용 :

grep -P 'AB\+CD,(?:nonAB\+nonCD|nonAB\+CD)' file.txt

산출:

AB+CD,nonAB+nonCD
AB+CD,nonAB+CD
AB+CD,nonAB+nonCD,nonAB+CD

관련 정보