두 가지 유형의 명령문이 포함된 로그 파일이 있습니다.
그것을 말하는 한 가지 방법은 다음과 같습니다
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 ...