![일치하는 줄을 한 파일로 리디렉션하고 일치하지 않는 줄을 다른 파일로 리디렉션하는 방법은 무엇입니까?](https://linux55.com/image/42775/%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EC%A4%84%EC%9D%84%20%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%98%EA%B3%A0%20%EC%9D%BC%EC%B9%98%ED%95%98%EC%A7%80%20%EC%95%8A%EB%8A%94%20%EC%A4%84%EC%9D%84%20%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EB%A1%9C%20%EB%A6%AC%EB%94%94%EB%A0%89%EC%85%98%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
최적화된 방식으로 다음 요구 사항을 충족할 수 있는 스크립트/프로그램/유틸리티가 있습니까?
someCommand |
tee >(grep "pattern" > LinesWhichMatch) |
grep -v "pattern" > LinesWhichDoesNotMatch
답변1
당신은 그것을 사용할 수 있습니다 awk
.
command | awk '{ if (/pattern/) { print > "match" } else { print > "nomatch" } }'
답변2
예 는 다음과 같습니다 sed
.
참고: sed의 w
명령은 스크립트를 실행할 때마다 기존 파일을 덮어쓰지만 특정 쓰기 명령이 트리거되는 경우에만 해당됩니다.rm
rm -f file-{yes,not}
sed -ne '/pattern/bY; w file-not' -e 'b; :Y; w file-yes' file
답변3
awk에 파일을 추가할 수 있습니다.
awk '{if (/pattern/) print >>"matched"; else print >>"unmatched"; }
또는 더 짧게:
awk '{print >>(/pattern/?"matched":"unmatched")}'