아, 내가 막혔구나

아, 내가 막혔구나

업무상 진행 중인 프로젝트가 있습니다. 제가 작성 중인 스크립트는 처음에 두 개의 인수를 사용합니다. 하나는 고유 식별자이고 다른 하나는 로그 파일용입니다(두 문자열 모두). 이제 고유 식별자를 구문 분석하는 첫 번째 부분이 완료되었습니다. 그러나 두 번째 부분은 무작위로 생성된 숫자와 문자 문자열인 특정 문자열 조각을 구문 분석하는 것입니다.

이 임의의 문자열을 얻기 위해 명령문 을 사용하고 awk있으며 Rubular에서 내 표현이 올바른지 확인했습니다. 그러나 더 많은 코드를 테스트하려고 하면 아무 것도 인쇄되지 않습니다. 명령줄에 입력한 내용은 다음과 같습니다.

awk '/\s=\s[a-zA-Z0-9-]+/ {print }' ~/jlog/server.log | more

내 스크립트에 있는 내용은 다음과 같습니다.

for j in $(cat ~/jlog/"$2"); do awk '/'"$1"'/\s=\s[a-zA-Z0-9-]+/ {print}'

그리고 여기 제가 분석하고 있는 로그의 일부가 있습니다:

2014-06-17 15:34:52,406 INFO  [random.random.xxx.message.Random] Processed instance (1.2.840.113619.2.284.3.2013961368.890.1402186239.15
5/1.2.840.113619.2.80.1944071037.22604.1402323463.136) from [email protected] to Random_AE.  AssociationID = 9eddb1b0-368e-4fb9-a684-44cc14be389c

특히 협회 ID 다음에 임의의 코드를 찾고 있습니다. 결과를 표시하는 방법에 대한 제안 사항이 있습니까? 나는 아이디어가 신선합니다.

답변1

시도해 보세요

awk '$3=="INFO" && $(NF-2)=="AssociationID" && $(NF-1)=="=" { print $NF }' ~/jlog/server.log

로그 파일 이름을 직접 전달하면 and awk사용을 피할 수 있습니다 .forcat

관련 정보