제가 진행하고 있는 작업 프로젝트가 있습니다. 제가 작성 중인 스크립트는 처음에 두 개의 매개변수를 사용합니다. 하나는 고유 식별자이고 다른 하나는 로그 파일(두 문자열 모두)입니다. 이제 고유 식별자를 구문 분석하는 첫 번째 부분을 완료했습니다. 하지만 두 번째 부분은 무작위로 생성된 숫자와 문자의 문자열인 특정 문자열을 구문 분석하는 것입니다.
나는 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
또한 로그 파일 이름을 직접 전달하여 및 awk
사용을 피할 수도 있습니다 .for
cat