파일을 두 개의 파일로 분할하는 방법은 무엇입니까? 한 파일에는 패턴과 일치하는 줄이 포함되어 있고 다른 파일에는 패턴과 일치하지 않는 줄이 포함되어 있습니까? 다른 파일에서 일치시킬 패턴을 지정하고 싶습니다. 이 라인은 상호 배타적입니다. 즉, 한 카테고리에 속하는 라인은 다른 카테고리에 속할 수 없습니다. 별도로 두 번 수행 할 수 있지만 grep
파일을 한 번만 반복하고 싶습니다.
내가 지금 하고 있는 일은 다음과 같습니다.
grep -F -f regexp_file input_file>./positive_match
grep -F -f -v regexp_file input_file>./negative_match
답변1
문제는 부분 입력(디스크에서 입력 파일을 한 번만 읽기)과 부분 처리(파일을 한 번만 반복)에 있습니다.
하나의 스트림으로만 출력할 수 있으므로 grep
하나의 인스턴스만 사용하여 작업의 반복 부분을 완료할 수는 없습니다 grep
.
작업의 입력 부분이 개선될 수 있습니다.
tee >(grep -F -f regexp_file >./positive_match) < input_file | \
grep -F -f regexp_file -v >./negative_match
을 사용 하여 tee
및bash
프로세스 교체, input_file
디스크에서 한 번만 읽어야 합니다. 이것pee
주문하다같은 일을 할 수 있습니다:
pee 'grep -F -f regexp_file >./positive_match' \
'grep -F -f regexp_file -v >./negative_match' < input_file