비어 있지 않고 로 시작하지 않는 줄을 선택해야 합니다 //
. 다음과 같이 두 개의 개별 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