
다음 논리 연산과 일치하는 행을 추출하고 싶습니다.
"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