grep 일치를 기반으로 파일 분할

grep 일치를 기반으로 파일 분할

파일을 두 개의 파일로 분할하는 방법은 무엇입니까? 한 파일에는 패턴과 일치하는 줄이 포함되어 있고 다른 파일에는 패턴과 일치하지 않는 줄이 포함되어 있습니까? 다른 파일에서 일치시킬 패턴을 지정하고 싶습니다. 이 라인은 상호 배타적입니다. 즉, 한 카테고리에 속하는 라인은 다른 카테고리에 속할 수 없습니다. 별도로 두 번 수행 할 수 있지만 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

을 사용 하여 teebash프로세스 교체, input_file디스크에서 한 번만 읽어야 합니다. 이것pee주문하다같은 일을 할 수 있습니다:

pee 'grep -F -f regexp_file    >./positive_match' \
    'grep -F -f regexp_file -v >./negative_match' < input_file

관련 정보