perl 정규 표현식 질문입니다.
perl mania에 올렸는데 이곳에도 올려봅니다.
다음과 같은 log 가 있을때
Sales Browse Update -Sales Executive changed from lkrupp to mregnier
Sales Browse Update -Sales Executive changed from kclaxton to lkrupp
Sales Browse Update -Sales Executive changed from mfreeman to kclaxton
Sales Browse Update -Sales Executive changed from to mfreeman -Priority changed from to High
Info Manager Update -CSR changed from to cdavis -Sales Executive changed from to cdavis
Sales Browse Update -Sales Executive changed from twhite to mfreeman
Sales Browse Update -Sales Executive changed from lkrupp to twhite
Sales Browse Update -Sales Executive changed from nwhite to lkrupp
Priority to Call 2 - AccExec Removed: -Sales Executive changed from lkrupp to
위의 logs는 DB에서 특정 ID의 log 입니다. while loop을 돌리면서 "Sales Executive changed from lkrupp to mregnier" -> to username들만을 뽑아내고 싶습니다. 가능한지 불가능한지도 모르겠습니다. 혹시 아시는분 계시면 조언주시면 감사하겠습니다. 구룹으로 묶어서 그부분만 빼내는 생각을 했는데 생각처럼 되지가 않습니다. 사실 구룹으로 묶기도 힘들지 않을까 하는데요....도움 요청 드립니다.
perl 까지도 필요 없을
perl 까지도 필요 없을 것 같은데요..
cat log | grep 'Sales Executive changed from lkrupp to' | awk '{print $9, $10;}'
이러면 돼지 않을까요?
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
----------------------
얇은 사 하이얀 고깔은 고이 접어서 나빌레라
while ($line = <>){? ? if
그럼 이만 총총...[竹]
http://elflord.egloos.com
===== ===== ===== ===== =====
그럼 이만 총총...[竹]
http://elflord.egloos.com
답변 감사합니다. if
답변 감사합니다.
if ($log =~ m/Sales Executive changed from (.*) (.*)/) { ... }
저도 이런식으로 해결했습니다. if 사용않고 ...=~ s/... 이런식으로 하려했는데 않되더군요.
==
more than one way to do it
말로만 블로거: http://gojdweb.egloos.com
~m은 matching
~m은 matching
~s은 substitution
을 의미합니다.
command line
cat log | perl -ne 'print if s/^.+\s-Sales Executive changed from lkrupp (to\s.+)$/result: $1/'
이렇게해도 될거 같네요..
by P.C.Harley
댓글 달기