이 두 grep 문을 결합하는 방법

이 두 grep 문을 결합하는 방법

비어 있지 않고 로 시작하지 않는 줄을 선택해야 합니다 //. 다음과 같이 두 개의 개별 grep 명령을 실행할 수 있습니다.

빈 줄이 아닌 줄을 추출하려면:

grep -v -E '^$' test.txt 

다음으로 시작하지 않는 줄을 추출하려면 다음을 수행하세요 //.

grep -v '//' test.txt 

이 두 명령을 하나로 결합하려면 어떻게 해야 합니까?

답변1

이 시도,

 grep -ve '^$' -e '^//' file

남성의 경우:

-e 모드, --regexp=모드

Use PATTERN as the pattern.  This can be used to specify multiple search patterns,

또는 확장 정규식(-E)을 사용합니다.

 grep -v -E '^($|//)' file

남성의 경우:

두 개의 정규 표현식은 중위 연산자 |로 연결될 수 있습니다. 결과 정규 표현식은 두 대체 표현식과 일치하는 모든 문자열과 일치합니다.

답변2

명령문이 병합되었습니다(오류는 나중에 설명됨).

grep -v -E '^$' | grep -v '//' test.txt

왼쪽에서 첫 번째 부분(까지 |)에만 빈 줄이 포함되지 않습니다. 첫 번째 오류는 가장 오른쪽 명령문이 제공된다는 것입니다 test.txt. 두 명령이 이 입력에 대해 작동하려면 가장 왼쪽 명령문에 제공되어야 합니다. 내 말은:

grep -v -E '^$' test.txt | grep -v '//'

두 번째 오류는 '//'정의가 실제로 줄의 시작을 나타내는 '^//'위치에 있어야 한다는 것입니다. ^모든 것을 한 번에:

grep -v -E '^$' test.txt | grep -v '^//'

이러한 체인 사용은 grep일반적인 관행입니다. 이를 하나의 프로세스로 결합하는 방법에 대한 grep자세한 내용은 다른 답변을 참조하세요 .

답변3

따라서 다음으로 시작하는 줄이 필요합니다 //.

grep -E '^([^/]|.[^/])' file

관련 정보