![동일한 파일에서 두 개의 서로 다른 패턴 문을 개별적으로 grep하는 방법](https://linux55.com/image/121425/%EB%8F%99%EC%9D%BC%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EC%84%9C%EB%A1%9C%20%EB%8B%A4%EB%A5%B8%20%ED%8C%A8%ED%84%B4%20%EB%AC%B8%EC%9D%84%20%EA%B0%9C%EB%B3%84%EC%A0%81%EC%9C%BC%EB%A1%9C%20grep%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
두 가지 유형의 명령문이 포함된 로그 파일이 있습니다.
그것을 말하는 한 가지 방법은 다음과 같습니다
LOG:Update For User 12932030 statement @2113 set startduration='2017-01-03 00:01:30'...
LOG:Update For User 12932030 statement @2033 set startduration=endduration ...
LOG:Update For User 12932031 statement @2403 set startduration='2017-01-04 00:02:30'...
LOG:Update For User 12932032 statement @3113 set startduration='2017-01-09 00:03:30'...
LOG:Update For User 12932033 statement @9313 set startduration=endduration ...
LOG:Update For User 12932034 statement @9126 set startduration=endduration ...
그래서 여기에서 두 가지를 별도로 추출하고 싶습니다. 하지만 나의 현재 접근 방식은 다음과 같습니다
grep -i " LOG:Update For User set startduration" log.csv > result.csv
둘 사이에는 차이가 없습니다. 시작 기간 후에 패턴을 병합하는 방법을 잘 모르겠습니다. 도움을 주시면 감사하겠습니다.
답변1
이것을 두 번 사용해 보십시오 grep
:
원하는 출력 유형 1:
grep -E "LOG:Update For User [0-9]* statement *@[0-9]* set startduration='" log.csv
LOG:Update For User 12932030 statement @2113 set startduration='2017-01-03 00:01:30'...
LOG:Update For User 12932031 statement @2403 set startduration='2017-01-04 00:02:30'...
LOG:Update For User 12932032 statement @3113 set startduration='2017-01-09 00:03:30'...
원하는 출력 유형 2:
grep -E "LOG:Update For User [0-9]* statement *@[0-9]* set startduration=[^']" log.csv
LOG:Update For User 12932030 statement @2033 set startduration=endduration ...
LOG:Update For User 12932033 statement @9313 set startduration=endduration ...
LOG:Update For User 12932034 statement @9126 set startduration=endduration ...